Ще однією першопричиною цієї проблеми може бути різниця між 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
? Переконайтеся, що у вас є метод у вашій політиці