SAM 应用程序部署会出现预检错误,但如果我在 aws apigateway 控制台中创建 OPTIONS 方法,我的预检就会通过
SAM app deploy gives preflight error but if I create OPTIONS method in aws apigateway console my preflight passes
我正在使用 SAM 在 cloudformation 中创建 API。
问题:
在我的 SAM 应用程序模板中的什么位置添加 'X-Requested-With' header?
我如何编辑我的代码,以便在无需进入 AWS 控制台的情况下预检成功?
问题:
我正在处理我的预检请求,当我部署我的 SAM 应用程序时,我在邮递员中收到 403 FORBIDDEN,当我转到 AWS 控制台时,header 'X-Requested-With' 不存在。
如果我尝试在控制台中添加 'X-Requested-With' header 之后它仍然会给出错误,但是如果我在控制台中删除 OPTIONS 方法并创建根据 (https://enable-cors.org/server_awsapigateway.html) 从头开始的 OPTIONS 方法 它有效,我在 postman 中得到了 200 OK。
代码:
template.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' header,而是我的 SAM 应用程序将所有方法的 ApiKeyRequired 设置为 true。
我所要做的就是将所有选项方法的 ApiKeyRequired 设置为 false。
这是 link 另一个问题的解决方案。
Preflight response 403 forbidden. How can I allow options method without x-api-key?
我正在使用 SAM 在 cloudformation 中创建 API。
问题: 在我的 SAM 应用程序模板中的什么位置添加 'X-Requested-With' header? 我如何编辑我的代码,以便在无需进入 AWS 控制台的情况下预检成功?
问题: 我正在处理我的预检请求,当我部署我的 SAM 应用程序时,我在邮递员中收到 403 FORBIDDEN,当我转到 AWS 控制台时,header 'X-Requested-With' 不存在。
如果我尝试在控制台中添加 'X-Requested-With' header 之后它仍然会给出错误,但是如果我在控制台中删除 OPTIONS 方法并创建根据 (https://enable-cors.org/server_awsapigateway.html) 从头开始的 OPTIONS 方法 它有效,我在 postman 中得到了 200 OK。
代码:
template.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' header,而是我的 SAM 应用程序将所有方法的 ApiKeyRequired 设置为 true。
我所要做的就是将所有选项方法的 ApiKeyRequired 设置为 false。
这是 link 另一个问题的解决方案。 Preflight response 403 forbidden. How can I allow options method without x-api-key?