【发布时间】:2021-02-06 15:13:14
【问题描述】:
我正在使用 AWS SAM 创建一些由 API-Gateway 事件触发的 Lambda 函数。
总的来说,它可以工作,但我需要添加两个功能:CORS 和 API 密钥身份验证。
我已经能够设置它,以便调用 API 需要 API 密钥。
这是我的template.yaml 的Globals 部分:
Globals:
Api:
Auth:
ApiKeyRequired: true
这很好用。
我还可以对其进行设置,使其支持 CORS。
这是Resources/Api 部分我的template.yaml:
Resources:
MyApi:
Type: AWS::Serverless::Api
Properties:
StageName: Prod
Cors:
AllowMethods: "'*'"
AllowHeaders: "'*'"
AllowOrigin: "'*'"
AllowCredentials: "'*'"
但是,它只有在我一个或另一个时才有效。
换句话说,如果我两者都:
Globals:
Api:
Auth:
ApiKeyRequired: true
Resources:
MyApi:
Type: AWS::Serverless::Api
Properties:
StageName: Prod
Cors:
AllowMethods: "'*'"
AllowHeaders: "'*'"
AllowOrigin: "'*'"
AllowCredentials: "'*'"
...它停止工作。
具体来说,sam CLI 工具构建和部署 sam 应用程序;但是,如果我在浏览器中调用 API,请求会失败:
这里是具体的错误信息:
Access to XMLHttpRequest at 'https://75hkwcgiy.execute-api.us-east-1.amazonaws.com/Prod/plans/35580' from origin 'http://[mydomain].com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
GET https://75hkwcgiy.execute-api.us-east-1.amazonaws.com/Prod/plans/35580 net::ERR_FAILED
关于为什么会这样,以及如何解决它以便我可以同时支持 CORS 和 API 密钥身份验证的任何见解?
【问题讨论】:
-
错误码和状态码是什么?
-
@PubuduJayawardana 错误是
Access to XMLHttpRequest at 'https://75hkwcgiy.execute-api.us-east-1.amazonaws.com/Prod/plans/35580' from origin 'http://[mydomain].com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
标签: amazon-web-services aws-lambda aws-api-gateway aws-serverless