#http #cors
Вопрос:
Мой firefox отправляет предварительный запрос ПАРАМЕТРОВ на мой личный сервер, чтобы сделать последующий запрос GET с учетными данными.
Предполетный запрос включает заголовки
Origin http://localhost:9670
Access-Control-Request-Headers authorization
Access-Control-Request-Method GET
Мой сервер отвечает
Access-Control-Allow-Credentials true
Access-Control-Allow-Origin http://localhost:9670
Vary: Origin
Согласно документам, которые я нашел, это должно быть нормально.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials
Во всяком случае, мой firefox все еще утверждает
CORS Отсутствует заголовок разрешения
в разделе «Перенесено» вкладки «Сеть» в консоли разработчика.
Чего не хватает в ответе моего сервера?
Ответ №1:
В дополнение к
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://localhost:9670
Vary: Origin
ответ на предполетный запрос также должен содержать
Access-Control-Allow-Methods: GET
Access-Control-Allow-Headers: Authorization
В противном случае проверка контроля доступа завершится неудачно, и ваш браузер не отправит фактический (предварительный) запрос. Видеть
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Methods
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers
Вы внедряете CORS с нуля в бэкэнде? Если да, то почему бы не использовать (хорошую) библиотеку CORS, которую вы могли бы настроить, чтобы позаботиться обо всем этом за вас?
Комментарии:
1. Я добавил эти два заголовка, и сейчас начинается предполетная подготовка! Спасибо.
2. Я должен проверить библиотеку cors, это может быть хорошей идеей.