Firefox CORS блокирует доступ к сайту, который указан в списке разрешенных

#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 заголовки: CORS_HEADER

согласно моему пониманию, если 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 был заблокирован браузером, этот запрос был заблокирован.