#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: «*», браузер разрешит запрос.