[英]AWS API gateway and authorizer CORS error
我花了一段时间才意识到这不是 CORS 问题。 我的 API 网关设置了 Cognito 授权方。 我使用 Postman 测试我的 IDtoken,当我的 header 上的授权人不正确或令牌已过期时,postman 响应会告诉我
{
"message": "Unauthorized"
}
{
"message": "Token expired"
}
问题是,在我的 dev/localhost 中; 如果令牌正确,我会正确地得到结果,但是当令牌错误或过期时,我会收到 CORs 错误。 我该如何设置才能正确处理结果?
Access to XMLHttpRequest at 'https://xcz3vfg4n7.execute-api.us-west-2.amazonaws.com/prod' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
xhr.js:210 POST https://xcz3vfg4n7.execute-api.us-west-2.amazonaws.com/prod net::ERR_FAILED 403
我们遇到了同样的问题,因为解决起来很痛苦,所以我想我会输入解决方案。
具体来说,我们在 React 应用程序中通过 Axios 收到了 CORs 错误,但没有通过 cURL 或 Thunderclient(VS Code 的类似 Postman 的扩展)收到错误。
该解决方案实际上缺少来自 API 网关的“响应”object 的标头。
由于 cURL 和 Thunderclient/Postman 不关心 CORs(因为它们基于服务器,而不是基于浏览器),这些工具不会在响应中查找“Access-Control-Allow-Origin”header。
我们恢复了预检选项调用 200 就好了,然后意识到 POST 调用返回的是 401 而没有“Access-Control-Allow-Origin”header。
由于授权方在方法请求上,它永远不会通过 API 网关中的 Lambda 代理,因此不会返回完整的响应标头。
所以...解决方案实际上非常简单。
重要提示:不要忘记“重新部署”您的 API,否则更改不会生效
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.