AWS API Gateway: 403 Запрещенный ответ на предварительный запрос OPTIONS - PullRequest
0 голосов
/ 25 января 2020

Я на пути к созданию API с использованием AWS API Gateway. Я создал метод PUT для выполнения некоторых функций в моей базе данных.

Вы можете видеть на изображении ниже, я установил следующее в качестве заголовков ответа на AWS.

enter image description here

Вот как я делаю свой запрос на реагирование JS:

fetch('https://myawsurl.execute-api.ap-southeast-2.amazonaws.com/Dev/search', {
  method: 'PUT',
  headers: {
    'Content-Type':'application/json',
    'Access-Control-Request-Method': 'PUT',
    'Access-Control-Request-Headers': 'Content-Type'
  },
  body: {
   "searchby": JSON.stringify({"searchby":"test"}),
  }
 }).then(res=>res.json()).
 then((data)=>this.setState({
  jobs:data,
  isLoading:false,
 }));

Всякий раз, когда я вызываю выборку, я получаю следующую ошибку на моем chrome console:

' Доступ к выборке в' https://myawsurl.execute-api.ap-southeast-2.amazonaws.com/Dev/search 'из источника' http://localhost: 3000 'заблокирован политикой CORS : Ответ на запрос предварительной проверки не проходит проверку контроля доступа: На запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Если непрозрачный ответ отвечает вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS. '

enter image description here

Из того, что я вижу, я ясно получил «Access-Control-Allow-Origin» в своем ответе.

Я знаю, что почтальон работает по-другому, но я не получаю ошибку при выполнении того же запроса на почтальон.

Вот скриншот того, какой заголовок ответа на тот же запрос сделан почтальоном

enter image description here

Странно, Ошибка при firefox отличается от такового у chrome.

enter image description here

1 Ответ

0 голосов
/ 26 января 2020

Похоже, у вас уже есть свой ответ, но для других, просматривающих это сообщение, причина сбоя заключается в том, что заголовки CORS не были возвращены методом OPTIONS .

Браузер вызывает этот метод от нашего имени перед вызовом метода PUT. Это ожидаемое поведение.

Вот документация API-шлюза по CORS

https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html

...