#cors
Вопрос:
Я пытаюсь использовать сайт-заполнитель json для получения фиктивных данных для проекта react. Я получаю данные с помощью пакета axios. Я открыл свое приложение в Firefox, и оно показало эту ошибку в консоли:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://jsonplaceholder.typicode.com/users. (Reason: CORS header ‘Access-Control-Allow-Origin’ does not match ‘https://localhost:3000’)
.
Затем я проверил заголовок ответа, и в нем есть следующие CORS
заголовки:
согласно моему пониманию, если access-control-allow-credentials
это true
и access-control-allow-origin
соответствует моему происхождению (которое есть http://localhost:3000
), то я должен иметь доступ к данным ответа, но Firefox блокирует его.
Чего я не понял, так это почему Firefox блокирует данные ответа, несмотря access-control-allow-origin
на происхождение совпадений. Я также протестировал это приложение в браузере Brave, и оно отлично работало.
Я использую Firefox developer version 95.0b6 (64-bit)
Комментарии:
1.
https://localhost:3000
иhttp://localhost:3000
имеют разное происхождение (потому что их схемы разные).2. ДА. Это правильно, но в заголовке ответа есть
http://localhost:3000
, так что это должно позволить мне быть правым.3. Однако сообщение об ошибке CORS указывает на то , что запрос был отправлен
https://localhost:3000
.4. я нашел настоящую проблему. Фактическая проблема была связана с
https everywhere
расширением. Это каким-то образом удалось убедить firefox в том, что я используюhttps
, что я не был такCORS
заблокирован ответом.
Ответ №1:
Судя по всему, вы занимаетесь localhost
разработкой http
и пытаетесь использовать cloudflare с помощью https
запроса (если я не прочитал это неправильно). Все современные браузеры заблокируют это сегодня, потому что они не будут разрешать кросс-протокольные запросы (и я думаю, что они больше не разрешают небезопасные запросы). Если вы настроите локальную среду разработки для работы под собственным самозаверяющим сертификатом безопасности, вы сможете заставить свои вызовы CORS работать с локальной разработкой.
Комментарии:
1. да, это было связано с запросом кросс-протокола, но он не был заблокирован браузером. На самом деле, эта ошибка была вызвана
https everywhere
расширением. Я думаюhttps everywhere
, что расширению каким-то образом удалось убедить браузер в том, что я используюhttps
протокол, не меняя http на https в URL. Поскольку я был включенhttp
, и allow-origin такжеhttp
был заблокирован браузером, этот запрос был заблокирован.