Другой основной причиной этой проблемы может быть разница между HTTP / 1.1 и HTTP / 2.
Симптом: некоторые пользователи, но не все, сообщали об ошибке CORS при использовании нашего Программного обеспечения.
Проблема:Access-Control-Allow-Origin
заголовок отсутствовал иногда .
Контекст: у нас есть лямбда-выражение, предназначенное для обработки OPTIONS
запросов и ответов с соответствующими заголовками CORS, например для Access-Control-Allow-Origin
сопоставления с белым списком Origin
.
Решение . Кажется, что шлюз API преобразует все заголовки в нижний регистр для вызовов HTTP / 2, но сохраняет заглавные буквы для HTTP / 1.1. Это привело к event.headers.origin
сбою доступа к .
Убедитесь, что у вас тоже есть эта проблема:
Предполагая, что ваш API находится в https://api.example.com
, а ваш интерфейс - в https://www.example.com
. Используя CURL, сделайте запрос по HTTP / 2:
curl -v -X OPTIONS -H 'Origin: https://www.example.com' https:
Выходные данные ответа должны включать заголовок:
< Access-Control-Allow-Origin: https://www.example.com
Повторите тот же шаг, используя HTTP / 1.1 (или с Origin
заголовком в нижнем регистре ):
curl -v -X OPTIONS --http1.1 -H 'Origin: https://www.example.com' https:
Если Access-Control-Allow-Origin
заголовок отсутствует, вы можете проверить чувствительность к регистру при чтении Origin
заголовка.
Bucket Policy
? Убедитесь, что у вас есть метод в своей политике