Как включить CORS для ресурса шлюза API AWS
Я создал REST API, используя AWS API Gateway и AWS Lambda, и когда я настроил CORS, я столкнулся с такой проблемой - я смог настроить заголовки ответов CORS для метода OPTIONS, но не для метода GET.
Я сделал это в соответствии с документацией Amazon, но когда я вызвал метод GET, я не увидел требуемых заголовков (Access-Control-Allow-Methods, Access-Control-Allow-Headers, Access-Control-Allow-Origin) в ответ. Из-за этого я получил ошибки на стороне клиента:
Не удалось загрузить #my_test_rest#: в запрошенном ресурсе отсутствует заголовок "Access-Control-Allow-Origin". Origin #my_test_rest_url#, следовательно, не имеет доступа.
В качестве временного исправления я жестко закодировал требуемые заголовки в коде функции Lambda, но это не похоже на правильное решение, и я хотел бы понять, почему это не работает для меня. Есть идеи, что я делаю не так?
1 ответ
Поскольку вы используете интеграцию Lambda Proxy для своего метода, вам необходимо:
(1) предоставить Access-Control-Allow-Origin
заголовок как часть лямбда-ответа. Например:
callback(null, {
statusCode: 200,
headers: {"Content-Type": "application/json", "Access-Control-Allow-Origin": "*"},
body: JSON.stringify({message: "Success"})
});
(2) и добавить Access-Control-Allow-Origin
в качестве заголовка ответа 200 в вашей конфигурации ответа метода.