В настоящее время у меня есть функция POST, работающая через API Gateway и Lambda, доступ к которой осуществляется из клиента Angular с CORS. Хотя я не знаю, какова ваша конфигурация, я могу поделиться всеми своими соответствующими настройками в надежде, что, возможно, вы найдете что-то, что вы пропустили. Включение CORS на данный момент является довольно сложной задачей (и, надеюсь, это то, что Amazon работает над исправлением), требуя множества небольших шагов во многих областях с довольно плохой документацией.
У меня есть 2 метода (OPTIONS и POST) для моего ресурса, и я поделюсь соответствующими настройками для каждого:
POST:
Запрос метода: ничего особенного. В случае моей конечной точки у меня есть опция в разделе «Пути запроса» для одного из моих параметров маршрута. Я не использую строку запроса, поэтому строка запроса URL пуста. Заголовки HTTP-запроса также пусты.
Запрос на интеграцию:
Тип интеграции: Шаблоны лямбда-сопоставления: у меня есть один (application / json) с шаблоном для передачи соответствующих значений из тела запроса и параметров маршрута в мою лямбда-функцию.
Ответ метода:
Разверните поле кода состояния 200. Добавьте заголовок для «Access-Control-Allow-Origin» и нажмите кнопку с галочкой, чтобы сохранить его. Возможно, вам придется сделать это для любых других кодов состояния, которые могут у вас быть.
Ответ интеграции:
Разверните поле состояния ответа 200. В разделе «Сопоставления заголовков» измените значение сопоставления, чтобы оно содержало «*». Обязательны одинарные кавычки. Возможно, вам придется сделать это для любых других ответов на интеграцию, которые могут у вас возникнуть.
ВАРИАНТЫ:
Запрос метода:
Ничего особенного, как и метод POST.
Запрос на интеграцию:
Я настроил имитацию интеграции. Согласно Amazon, это не имеет значения, поэтому я просто установил имитацию, поскольку все, что нам действительно нужно сделать, это ответить 200 с соответствующими заголовками. Нет шаблонов сопоставления.
Ответ метода:
Разверните поле кода состояния 200. Добавьте следующие 3 заголовка ответа и сохраните их, установив флажок: Access-Control-Allow-Headers, Access-Control-Allow-Methods, Access-Control. -Allow-Origin. Других кодов состояния нет.
Ответ интеграции:
Разверните поле состояния ответа 200. Регулярное выражение пусто (установлено по умолчанию), и этот метод имеет только ответ 200. Разверните сопоставления заголовков и установите для заголовков следующие значения сопоставления:
Access-Control-Allow-Headers: 'Content-Type,X-Amz-Date,Authorization,X-Requested-With'
Access-Control-Allow-Methods: 'GET,POST,OPTIONS'
Access-Control-Allow-Origin: '*'
Нет шаблонов сопоставления.
Затем разверните свой API. Надеюсь, теперь он разрешает запросы CORS. Я столкнулся с той же проблемой, что и вы, и я почти уверен, что проблема заключалась в отсутствии значения X-Requested-With в Access-Control-Allow-Headers.
person
Akshay Dhalwala
schedule
03.11.2015