добавление Access-Control-Expose-Headers в лямбда-заголовок ответа AWS - PullRequest
0 голосов
/ 13 марта 2019

Я делаю вызов REST для лямбда-службы и получаю ответ с некоторыми ожидаемыми данными вместе с информацией заголовка ответа.Я пытаюсь получить доступ к одному из значения ключа заголовка на стороне клиента, но когда я читаю информацию заголовка в javascript, я получаю только тип содержимого.На вкладке сети разработчика браузера я вижу набор значений ключа заголовка.Я попытался добавить Access-Control-Expose-Headers в лямбда-шаблон Cloudwork для этого конкретного ключа, но я получил еще одно исключение при его развертывании на AWS.Не уверен, что мне не хватает.Любая помощь могла бы быть полезна.Спасибо.

1 Ответ

0 голосов
/ 13 марта 2019

Убедитесь, что у вас есть метод options в вашем пути в API Gateway:

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:
          ...

В вашей лямбде вы можете установить заголовок следующим образом:

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)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...