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?