cors - SAM 应用程序部署提供预检错误,但如果我在 aws apigateway 控制台中创建 OPTIONS 方法,我的预检通过
问题描述
我正在使用 SAM 在 cloudformation 中创建 API。
问题: 在我的 SAM 应用程序模板中,我应该在哪里添加“X-Requested-With”标头?如何编辑我的代码以使预检成功而无需进入 AWS 控制台?
问题: 我正在处理我的预检请求,当我部署我的 SAM 应用程序时,我在邮递员中得到 403 FORBIDDEN,当我转到 AWS 控制台时,标题“X-Requested-With”不存在。
如果我尝试在控制台中添加“X-Requested-With”标头,它仍然会给出错误,但是如果我在控制台中删除 OPTIONS 方法并根据(https://enable )从头开始创建 OPTIONS 方法-cors.org/server_awsapigateway.html)它有效,我在 postman 中得到 200 OK。
代码:
模板.yaml
Globals:
Function:
Timeout: 10
Api:
Cors:
AllowMethods: "'DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT'"
AllowHeaders: "'Content-Type,X-Amz-Date,X-Amz-Security-Token,Authorization,X-Api-Key,X-Requested-With,Accept,Access-Control-Allow-Methods,Access-Control-Allow-Origin,Access-Control-Allow-Headers'"
AllowOrigin: "'*'"
Resources:
MyApi:
Type: AWS::Serverless::Api
Properties:
StageName: Prod
Auth:
ApiKeyRequired: true
MyFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: mypath/
Handler: app.lambdaHandler
Runtime: nodejs12.x
Events:
KrySeisoen:
Type: Api
Properties:
RestApiId: !Ref MyApi
Path: /mypath
Method: get
Policies:
- ...
VpcConfig:
SecurityGroupIds:
- ...
SubnetIds:
- ...
解决方案
所以我叫错了树。
我遇到的问题不在于“X-Requested-With”标头,而是我的 SAM 应用程序将所有方法的 ApiKeyRequired 设置为 true 的事实。
我所要做的就是将所有选项方法的 ApiKeyRequired 设置为 false。
这是另一个问题的链接,其中包含我的问题的解决方案。 预检响应 403 被禁止。如何在没有 x-api-key 的情况下允许选项方法?
推荐阅读
- python - Python Pandas 下一个序列号
- google-chrome - Headless Chrome 在 IIS 下失败,但在命令行上工作
- python - 重复循环直到函数输入改变
- javascript - 使用变量检查字符串格式
- java - 为什么集合的输出与列表相同。我认为这会有所不同,因为集合是无序的
- html - 如何在 IE 中创建带有排水沟的 flex 行?
- spring-security - 错误 SAMLResponse 上的 Spring Security SAML 无限重试循环
- sql - 经典报告的 APEX 中未显示列标题
- react-native - 不变违规:文本字符串必须在
组件,在 React Native 中使用条件运算符时发生 - javascript - 如何在 XCUITest 自动化期间在移动 Safari 中注入/评估 javascript?