Ответ 1
Ваш код заставляет ваш браузер отправлять предварительный запрос CORS OPTIONS
, а серверы отвечают перенаправлением 3xx
. Вместо этого он должен ответить сообщением об успехе 2xx
.
Вы можете изменить свой код, чтобы браузер не отправлял запрос OPTIONS
.
Что касается всего, что происходит в этом случае, важно знать, что браузеры выполняют предварительную проверку CORS, если:
- метод запроса - это что угодно, кроме
GET
,HEAD
илиPOST
- Вы установили пользовательские заголовки запроса, отличные от
Accept
,Accept-Language
,Content-Language
,Content-Type
,DPR
,Downlink
,Save-Data
,Viewport-Width
илиWidth
- заголовок запроса
Content-Type
имеет значение, отличное отapplication/x-www-form-urlencoded
,multipart/form-data
илиtext/plain
Если вы не можете изменить свой код, чтобы браузеры не выполняли предварительную проверку, тогда есть еще один вариант:
- Изучите URL-адрес в заголовке ответа
Location
в ответе на запросOPTIONS
. - Измените свой код, чтобы вместо этого сделать запрос на этот другой URL.
Разница между URL-адресами может быть такой простой, как конечная косая черта в пути - например, вам может потребоваться изменить URL-адрес в коде на http://localhost/api/auth/login/
(обратите внимание на конечную косую черту) вместо http://localhost/api/auth/login
(без косой черты).
Вы можете использовать панель "Сеть" в браузере devtools, чтобы проверить ответ на запрос OPTIONS
и найти URL перенаправления в значении заголовка ответа Location
.