Конфигурация сервера CORS - PullRequest
0 голосов
/ 30 января 2019

У меня проблема с CORS, возникающая при обращении к API и пытающаяся решить проблему с провайдером API, но это немного над моей головой.

запрос get, который я отправляю с помощью axios, равен

axios({
     method: 'post',
     url: <endpoint url>,
     data: someDataObj,
     headers: {
         'Authorization': <api key>,
         'Content-Type': 'application/json;charset=UTF-8'
     }
 }) 

Сервер настроен для разрешения

  • заголовков: авторизация, тип контента
  • методы: POST, GET, OPTIONS
  • origin: *

Ошибка в chrome:

Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

, сетевой ответ:

GENERAL
Request URL: <api url>
Request Method: OPTIONS
Status Code: 500 Internal Server Error
Remote Address: 128.136.1.24:443
Referrer Policy: no-referrer-when-downgrade

RESPONSE HEADERS
Access-Control-Allow-Headers: Authorization,Content-Type
Access-Control-Allow-Methods: POST,GET,OPTIONS
Access-Control-Allow-Origin: *
Content-Type: application/json;charset=UTF-8
Date: Wed, 30 Jan 2019 17:22:53 GMT
Server: Microsoft-IIS/8.5
Transfer-Encoding: chunked
X-Powered-By: ASP.NET

REQUESTHEADERS
Provisional headers are shown
Access-Control-Request-Headers: authorization,content-type
Access-Control-Request-Method: POST
Origin: <domain>
Referer: <page url>
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36

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

1 Ответ

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

Chrome считает, что ваш запрос не является простым запросом и выполняет предварительно выданный запрос (ОПЦИИ вместо POST).Это из-за вашего Authorization заголовка и значения вашего Content-Type заголовка.Для обоих требуется предварительный запрос (OPTIONS).

Сервер отвечает на предварительный запрос, но он также отправляет вместе с ним код состояния 500 (Внутренняя ошибка сервера), что не должно происходить.Код состояния должен быть 200 (ОК).Вот почему Chrome отклоняет ответ на запрос OPTIONS и никогда не выполняет фактический запрос POST.Это проблема на стороне сервера.

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