Запрос заблокирован политикой CORS с использованием суперагента и Lumen API - PullRequest
0 голосов
/ 22 марта 2020

Я создал REST API, используя PHP Lumen Framework, для которого я снял все ограничения CORS для разработки, используя:

// Enable CORS on all API routes
header('Access-Control-Allow-Origin: *');
header("Access-Control-Expose-Headers: Content-Length, X-JSON");
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Authorization, Lang, Content-Type, X-Auth-Token');

Затем на внешнем интерфейсе я использую библиотеку суперагент чтобы позвонить. Например, я вызываю маршрут POST http://127.0.0.1:8000/auth/register:

superagent.post('http://127.0.0.1:8000/auth/register').send({
  name: 'name',
  email: 'test@test.test',
  password: '1234Test'
}).type('application/json')
  .end((err, res) => {
    console.log(res)
    console.log(err)
  })

К сожалению, я получаю сообщение об ошибке CORS, которое не могу понять:

Доступ к XMLHttpRequest в ' http://127.0.0.1: 8000 / auth / register 'from origin' http://localhost: 9000 'заблокирован политикой CORS: Ответ на предварительный запрос не проходит проверку контроля доступа: он не проходит имеет статус HTTP ok.

Я провожу некоторые исследования, но ничего не могу найти для ошибки It does not have HTTP ok status, и тестирование этого же запроса на Postman не дает мне никакой ошибки, кроме нормального поведения.

У кого-нибудь есть идеи, как я могу это решить? Где я могу найти документацию об этом типе ошибки?

1 Ответ

2 голосов
/ 24 марта 2020

Мне весьма любопытно, почему вы устанавливаете заголовки «вручную» самостоятельно, а не используете какие-то существующие и проверенные программные средства CORS-Middlware, которые сделают все магию c за вас. Я бы не стал изобретать велосипед заново, если он вам не нужен для учебных случаев.

Вот дубликат на стеке:

Включить CORS в люменах

Вот официальная документация о промежуточном программном обеспечении lumen:

https://lumen.laravel.com/docs/7.x/middleware

Вот некоторые хорошо структурированные и известные промежуточные программы, которые сделают эту работу за вас:

...