Amazon web services 在AWS Lambda响应头中添加访问控制公开头

Amazon web services 在AWS Lambda响应头中添加访问控制公开头,amazon-web-services,aws-lambda,Amazon Web Services,Aws Lambda,我正在对lambda服务进行REST调用,并获得带有一些预期数据以及响应头信息的响应。我试图访问客户端中的一个头键值,但当我在javascript中读取头信息时,我只得到内容类型。在browser developer的网络选项卡中,我可以看到标题键值集。我试图在lambda的Cloudformation模板中为该特定密钥添加访问控制公开头,但在AWS上部署它时遇到另一个异常。不知道我错过了什么。任何帮助都将不胜感激。谢谢。请确保API网关路径中有选项方法: Api: Type: AWS::A

我正在对lambda服务进行REST调用,并获得带有一些预期数据以及响应头信息的响应。我试图访问客户端中的一个头键值,但当我在javascript中读取头信息时,我只得到内容类型。在browser developer的网络选项卡中,我可以看到标题键值集。我试图在lambda的Cloudformation模板中为该特定密钥添加访问控制公开头,但在AWS上部署它时遇到另一个异常。不知道我错过了什么。任何帮助都将不胜感激。谢谢。

请确保API网关路径中有选项方法:

Api:
  Type: AWS::ApiGateway::RestApi
  Properties:
    Name: "my-api"
    Body:
      swagger: "2.0"
      info:
        version: "2018-03-20T13:41:34Z"
      basePath: "/"
      schemes:
      - "https"
      paths:
        /my-path:
          options:
            responses:
              "200":
                headers:
                  Access-Control-Allow-Origin:
                    type: "string"
                  Access-Control-Allow-Methods:
                    type: "string"
                  Access-Control-Allow-Headers:
                    type: "string"
            x-amazon-apigateway-integration:
              responses:
                default:
                  statusCode: "200"
                  responseParameters:
                    method.response.header.Access-Control-Allow-Methods: "'GET,POST,PUT,DELETE,OPTIONS'"
                    method.response.header.Access-Control-Allow-Headers: "'Content-Type,X-Amz-Date,Authorization,x-api-key,x-amz-security-token,Auth'"
                    method.response.header.Access-Control-Allow-Origin: "'*'"
              requestTemplates:
                application/json: "{\"statusCode\":200}"
              passthroughBehavior: when_no_match
              type: mock
          post:
          ...
从Lambda中,可以按如下方式设置标题:

exports.handler = async event => {
    ...    
    return {
        isBase64Encoded: false,
        statusCode: 200,
        headers: {                             
            'Access-Control-Expose-Headers': 'Content-Type,...',
            'Access-Control-Allow-Origin': '*',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(data)
    }
}