Localhost для AWS Lambda нет заголовка ‘Access-Control-Allow-Origin’

#cors #aws-api-gateway #serverless-framework

#cors #aws-api-gateway #бессерверная платформа

Вопрос:

У меня есть локальный сервер, который я использую для тестирования связи будущего удаленного сервера и его связи с Lambda serverless API. Запрос, который я делаю к API, является методом GET, и на данный момент у меня настроено следующее для обработки межсайтового взаимодействия.

Используя бессерверную платформу, я включил cors: true в serverless.yml файл

Кроме того, ответ должен возвращать следующее:

 response = {
        "statusCode": 200,
        "headers": {
            'Access-Control-Allow-Headers': 'Content-Type',
            'Access-Control-Allow-Origin': '*',
            'Access-Control-Allow-Methods': 'GET'
        },
        "body": {
            "message": "Authorization Successful!"
        }
    }
  

Однако щелчок по ссылке из a http://localhost:8000 на мой API, размещенный по https://*id*.execute-api.us-east-1.amazonaws.com/prod/auth адресу, выдает сообщение об ошибке:

 Access to XMLHttpRequest at 'https://*id*.execute-api.us-east-1.amazonaws.com/prod/auth' from origin 'http://localhost:8000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
  

Должен ли я добавлять заголовки в GET при получении этого API при нажатии на ссылку на localhost: 8000? Нужно ли мне что-либо обновлять с этим AWS API Gateway ? Из документации по безсерверной платформе это звучало так, как будто cors: true бы позаботится об этой настройке

Ответ №1:

Вы развернули шлюз API? Убедитесь, что в API Gateway вы выбрали метод GET и в раскрывающихся списках действий выберите deploy. Проблему CORS можно устранить, проверив, можете ли вы получить доступ к шлюзу API из Postman, но не из браузера. Поскольку вы возвращаете Access-Control-Allow-Origin: «*», браузер разрешит запрос.