Запрос Javascript CORS, отсутствует заголовок «Access-Control-Allow-Origin» с кодом состояния 200 - PullRequest
0 голосов
/ 29 октября 2018

Я сталкиваюсь с той же проблемой, что и Javascript CORS - отсутствует заголовок «Access-Control-Allow-Origin» . К сожалению, я не понимаю ответ и хочу понять причину.

Поток данных высокого уровня:

Javascript / HTML (развернут в S3) -> AWS API Gateway. Шлюз будет вернуть данные обратно.

Вот мое понимание и факт:

Так как мой код JavaScript в S3, я должен сделать CORS-запрос к API Шлюз для получения данных. С точки зрения кода ничего нет особый между запросом CORS и запросом того же происхождения.

Также мой код на самом деле сделает запрос к шлюзу API и получит 200 кодов состояния (нашел его на вкладке Сеть - Chrome). Однако из вкладки консоли - Chrome я получаю No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '<placeholder>' is therefore not allowed access.

Код JavaScript:

var xhr = new XMLHttpRequest();
xhr.open('GET', URL);
xhr.send();  

Мои вопросы:

  1. Во-первых, из перспективы кода нет ничего особенного между запросом CORS и запросом того же источника. Это правильно?
  2. Насколько я понимаю, при выполнении запроса CORS мы фактически делаем 2 запроса. Первый - сделать запрос к методу OPTIONS, чтобы убедиться, что мы можем сделать фактический запрос. Если серверная сторона возвращает «Access-Control-Allow-Origin»: «*». тогда второй запрос может быть отправлен. Это правильно?
  3. Если вышеприведенные 1,2 верны, я где-нибудь скучаю? Я уже настроил шлюз API для разрешения CORS и протестировал его. Возвращает заголовок ответа {"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,OPTIONS","Access-Control-Allow-Headers":"Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token","Content-Type":"application/json"}

1 Ответ

0 голосов
/ 05 ноября 2018

В конце концов, разберись!

Во-первых, технические знания для запроса CORS верны из моего понимания. По сути, когда нам нужен CORS, тогда заголовок ответа со стороны сервера должен иметь

{ "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Methods": "GET, OPTIONS", "Access-Control-Allow-Headers": "Content-Type, X -Amz-Date, Авторизация, X-Api-Key, X-Amz-Security-Token "," Content-Type ":" application / json "}.

Но что случилось с моим делом?

Я использую API-шлюз в качестве сервера и включаю CORS, но мне не известно о проблеме, связанной с интеграцией моего API-шлюза с лямбда-функцией. В этом случае наша лямбда-функция должна возвращать ответ с правильным заголовком.

Решение?

Добавление указанного выше заголовка как части возврата лямбда-функции.

...