Как включить 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 в вашей конфигурации ответа метода.

Другие вопросы по тегам