AWS API Gateway работает через CURL, но не работает через javascript - PullRequest
0 голосов
/ 23 января 2019

Привет! Я пытаюсь подключиться к шлюзу AWS API, он отлично работает на CURL, но не работает с JS. Взлом за политику CROS. Но из AWS я уже включил CROS

$.ajax({
        url: ApiURL,
        type: 'POST',
        dataType: 'json',
        contentType: "application/json",
        data: JSON.stringify(hash),
        async: true,
        crossDomain: true,
        crossOrigin: false,
        headers: {
        'accept': 'application/json',
        'Content-Type': 'application/json',
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Headers': '*',
        'Access-Control-Allow-Methods': 'POST'
        },

Метод CURL, полученный через AJAX

$.ajax({
        url: stripTrailingSlash(BASE_URL) + '/contact/send',
        type: 'POST',
        dataType: 'json',
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(body),
        async: true,
        headers: {
            'X-CSRF-Token': csrfToken
        },

Моя структура POST шлюза API, как это

Мой лямбда-ответ мне понравился

const response = {
statusCode: statusCode,

 headers:{ 'Access-Control-Allow-Origin' : '*' },
body: JSON.stringify({
  message: responceMessage,
  input: event,
}),
};
callback(null, response);

Ошибка в моем браузере

1 Ответ

0 голосов
/ 23 января 2019

Это работает в CURL, потому что CURL не отправляет запрос OPTIONS, но браузер отправляет его всякий раз, когда вы делаете запрос CORS.

Ответ на запрос OPTIONS - это то, что браузер использует, чтобы проверить, разрешено ли вамвызвать API.

Когда вы включаете CORS в API-шлюзе, он добавляет следующие заголовки

'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': '*',
'Access-Control-Allow-Methods': 'POST'

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...