Простой POST-запрос работает в Почтальоне, но не в браузере - PullRequest
1 голос
/ 17 апреля 2020

У меня возникла проблема, когда конечная точка POST возвращает ответ при запуске в Postman, но не при запуске его в браузере.

Я установил конечную точку API на AWS через сервер. Вот конфигурация .yml для этого:

service: tableau-export-rest

provider:
  name: aws
  runtime: nodejs10.x
  region: eu-west-1
  stage: ${opt:stage, 'dev'}
  timeout: 900
  memorySize: 3008

functions:
  storeExportFiters:
    handler: index.storeExportFiters  
    events:
      - http: 
          path: /store-export-filters
          method: post
          cors: true 

Преобразователь конечной точки storeExportFiters (который является лямбда-выражением) на данный момент просто возвращает сообщение об успехе:

module.exports = (event, ctx, cb) => {
  return cb(null, {
    statusCode: 200,
    body: JSON.stringify({
      worked: true
    })
  });
}

Когда я развертываю это на AWS и попытаться попасть в конечную точку от Почтальона через POST запрос без тела или чего-либо еще, что он посылает мне штраф в порядке. Однако, когда я пытаюсь сделать это в браузере, я получаю cors ошибку:

Доступ к XMLHttpRequest по адресу https://myapi.com/store-export-filters из источника 'http://localhost : 9003 'было заблокировано политикой CORS: на запрошенном ресурсе отсутствует заголовок' Access-Control-Allow-Origin '.

Вот код браузера, использованный для попытки получить ответ от конечной точки. Я использую Ax ios для запроса http:

  axios.post('https://myapi.com/store-export-filters')
    .then(function (response) {
      console.log(response);
    })
    .catch(function (error) {
      console.log(error);
    });

Я не могу понять, почему я получаю ошибку CORS, тем более что она работает в Postman на моей машине .

1 Ответ

0 голосов
/ 17 апреля 2020

Ваш API не настроен для перекрестных запросов. Вам необходимо настроить сервер для разрешения этих запросов.

Access-Control-Allow-Origin: *

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

Настройка вашего API для приема запросов только от указанных c происхождений устраняет эту проблему.

Access-Control-Allow-Origin: hostname:port
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...