如何解决HTTPApi + 无服务器框架 + API 网关 CORS 不起作用
我有一个使用无服务器框架创建的 HTTPApi API 网关。但是对于某些路线,CORS 不起作用。
provider:
name: aws
runtime: nodejs12.x
stage: dev
region: us-west-2
timeout: 29
httpApi:
cors:
allowedOrigins:
- '*'
allowedMethods:
- GET
- OPTIONS
- POST
- PUT
- DELETE
allowedHeaders:
- Content-Type
- X-Amz-Date
- Authorization
- X-Api-Key
- X-Amz-Security-Token
- X-Amz-User-Agent
- X-Transaction-Key
- Access-Control-Allow-Origin
我尝试在提供程序上设置 cors:true
选项,但仍然无效。
这是在所有路由上返回的响应,无论是 4xx 还是 2xx 代码。
return {
statusCode: StatusCode,headers: {
"Content-Type": "application/json","Access-Control-Allow-Origin": "*","Access-Control-Allow-Credentials" : true,"Access-Control-Allow-Headers" : "*","Access-Control-Allow-Methods": "OPTIONS,POST,GET,PUT,DELETE"
},body: JSON.stringify(Res,null,2),};
如果我检查控制台 I can see that the options are indeed applied
然而,some routes actually work
而 some others don't,那些不起作用的有 X-Transaction-Key
标头,而 OPTIONS
不返回 access-control-allow-headers: authorization,content-type,x-amz-date,x-amz-security-token,x-amz-user-agent,x-api-key,x-transaction-key
标头
我错过了什么? 提前致谢
解决方法
我也遇到过类似的问题。拉我的头发3天后。我发现了我的问题。一切都很好,除了在我的客户端中,很少有错误的 URL(拼写错误)指向我的服务器 API。这就是为什么很少有 API 可以正常工作,也很少有 API 无法正常工作。
修复到正确的 URL 后一切正常。 这是我的学习,希望有一天它会帮助其他人:
-
检查你是 serverless.yml 文件的 cors 部分,这是一个例子
cors: origin: '*' headers: - Content-Type - X-Amz-Date - Authorization - X-Api-Key - X-Amz-Security-Token allowCredentials: false
-
检查 Lamdba 是否有正确的响应标头,因为问题包含
用于故障排除的其他工具:
-
https://aws.amazon.com/premiumsupport/knowledge-center/api-gateway-cors-errors/
-
https://aws.amazon.com/premiumsupport/knowledge-center/support-case-browser-har-file/
希望能帮到你,谢谢!
快乐编码
,您是否尝试像在 Serverless with cors 中那样修复函数事件中的 'cors: true' 值?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。