【发布时间】:2020-03-11 00:32:51
【问题描述】:
我正在使用基于令牌的 lambda 授权器,如下所述: https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html
现在我仍在使用标题道具为tokenHeader的玩具示例
我的获取如下:
export function logout() {
return (dispatch, getState) => {
return fetch('https://account-api.example.com/v1/logout', {
method: 'GET',
headers: {
'Access-Control-Request-Method': 'GET',
'Access-Control-Request-Headers': 'Content-Type, Authorization',
'Content-Type': 'application/json',
'tokenHeader':'allow',
},
credentials: 'include'
})
.then((response) => {
return response.json().then((body) => {
return {
status: body.statusCode,
payload:body.payload,
};
},
);
})
.then((response) => {
console.log("response", response)
if (response.status !== 200) {
dispatch({ type: 'LOGOUT_ERROR', payload: response.payload.error});
}
if (response.status === 200) {
dispatch({ type: 'LOGOUT_SUCCESSFUL', payload: response.payload });
}
})
.catch(error => {
dispatch({ type: 'LOGOUT_FAILED', payload: String(error)});
})
};
}
当我查看网络选项卡时,我的请求中缺少 'tokenHeader':'allow' 标头,从而导致来自授权方的 401 - 我需要做些什么来防止此标头被剥离?
旁注:此请求适用于邮递员
API 网关配置(不确定这是否相关):
我不想忽略 CORS,并且在 account-api.example.com 和 dev.example.com 之间发送数据,所以请不要回答指示删除/忽略 cors - 我的目标是正确实施 cors。
【问题讨论】:
-
请问您是如何部署 API 网关的
-
@pubudut 当然,你在看什么?我使用的是 AWS UI 而不是 CLI 或无服务器,我可以分享哪些有助于调试的内容?谢谢,-E
-
您尝试过这种方法吗serverless.com/blog/cors-api-gateway-survival-guide 这基本上是无服务器方法。Postman 不进行预检检查,因此它可以在那里工作,但浏览器可以。我能够使用这种方法来处理 cors。
-
如果您使用控制台,那么您可以将标头添加到您的 API 网关响应标头以允许 cors
-
@pubudut 是的,我使用了该指南的各个方面 - 我的端点工作,并且我的浏览器能够访问它 - 问题是我的标头
tokenheader已从请求标头中剥离。如果我将授权人更改为默认设置为“允许”,它可以正常工作 - 这表明(我认为)这不是明确的 cors 问题,而是 fetch-api 从请求中剥离了我的自定义标头
标签: cors aws-api-gateway fetch-api preflight lambda-authorizer