Я пытаюсь сделать простой запрос с перекрестным происхождением, и Firefox постоянно блокирует его этой ошибкой:
Запрос на кросс-источник заблокирован: та же политика происхождения запрещает чтение удаленного ресурса по [url]. Это можно исправить, переместив ресурс в тот же домен или включив CORS. [URL]
Он отлично работает в Chrome и Safari.
Насколько я могу судить, я установил все правильные заголовки на моем PHP, чтобы это работало. Вот что отвечает мой сервер
HTTP/1.1 200 OK
Date: Mon, 23 Jun 2014 17:15:20 GMT
Server: Apache/2.2.22 (Debian)
X-Powered-By: PHP/5.4.4-14+deb7u8
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Content-Type
Access-Control-Request-Headers: X-Requested-With, accept, content-type
Vary: Accept-Encoding
Content-Length: 186
Content-Type: text/html
Я пробовал использовать Angular, jQuery и базовый объект XMLHTTPRequest, например:
var data = "id=1234"
var request = new XMLHttpRequest({mozSystem: true})
request.onload = onSuccess;
request.open('GET', 'https://myurl.com' + '?' + data, true)
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
request.send()
... и он работает во всех браузерах, кроме Firefox. Может кто-нибудь помочь с этим?
javascript
firefox
cors
cross-domain
Godwhacker
источник
источник
mozSystem
не поддерживается для обычных веб-сайтов, только для упакованных приложений firefox-os , поэтому откажитесь от этой опции.Accept application/json, text/plain, */*
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Content-Length 35
Content-Type application/x-www-form-urlencoded; charset=UTF-8
Host [url]
Origin [url]
Referer [referrer url]
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:30.0) Gecko/20100101 Firefox/30.0
Ошибка:Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at [url]. This can be fixed by moving the resource to the same domain or enabling CORS. [url]
Ответы:
Оказывается, это не имеет ничего общего с CORS - это проблема с сертификатом безопасности. Вводящие в заблуждение ошибки = 4 часа головной боли.
источник
withCredentials=true
экземпляра XHR; в противном случае Firefox не смог использовать клиентский сертификат при выполнении запроса (однако в Chrome работал нормально).Я столкнулся с этим вопросом, обнаружив, что запросы в Firefox блокируются сообщением:
Выдернув волосы, я обнаружил, что недавно установленное расширение Firefox, Privacy Badger, блокирует запросы.
Если вы ответили на этот вопрос после того, как почесали голову, попробуйте проверить, какие расширения вы установили, чтобы увидеть, не блокируют ли какие-либо из них запросы.
Подробнее см. Причина: запрос CORS не удалось выполнить в MDN.
источник
Я обнаружил, что моя проблема заключалась в том, что сервер, на который я отправил перекрестный запрос, имел сертификат, которому не доверяли.
Если вы хотите подключиться к кросс-домену с
https
, вам нужно сначала добавить исключение для этого сертификата.Вы можете сделать это, посетив заблокированную ссылку один раз и добавив исключение.
источник
Решение нашла через 2 дня :(.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Requests_with_credentials
источник
Если у вас нет «настоящего» сертификата (и, следовательно, вы используете самоподписанный), в FireFox вы можете перейти по ссылке:
Введите адрес, например: https: //wwww.myserver: myport
источник
Несколько предупреждений. Наконец-то я решил проблему с Firefox и CORS.
Решением для меня был этот пост
Установка CORS (совместное использование ресурсов между источниками) на Apache с правильными заголовками ответов, разрешающих все через | Бенджамин Хорн
Однако Firefox вел себя очень, очень странно после установки этих заголовков на сервере Apache (в папке .htaccess).
Я добавил много чего
console.log("Hi FF, you are here A")
другого, чтобы увидеть, что происходит.Сначала казалось, что его повесили
xhr.send()
. Но потом я обнаружил, что до этого утверждения дело не доходит. Я поставил еще одинconsole.log
прямо перед ним и не дошел - хотя между последнимconsole.log
и новым ничего не было . Он просто остановился между двумяconsole.log
.Изменение порядка строк, удаление, чтобы увидеть, нет ли в файле странных символов. Ничего не нашел.
Перезапуск Firefox устранил проблему.
Да, я должен сообщить об ошибке. Просто это так странно, что не знаю, как это воспроизвести.
ВНИМАНИЕ : И, о, я сделал только
Header always set
части, а неRewrite*
часть!источник
Просто добавь
в
.htaccess
файл в корне веб-сайта, к которому вы пытаетесь подключиться.источник
Для потомков также проверьте журналы сервера, чтобы узнать, возвращает ли запрашиваемый ресурс 200.
Я столкнулся с аналогичной проблемой, когда все правильные заголовки возвращались в предварительном запросе ajax, но браузер сообщал, что фактический запрос был заблокирован из-за неправильных заголовков CORS.
Оказывается, запрашиваемая страница возвращала ошибку 500 из-за неправильного кода, но только тогда, когда она была получена через CORS. Браузер (как Chrome, так и Firefox) ошибочно сообщил, что заголовок Access-Control-Allow-Origin отсутствует, вместо того, чтобы сообщить, что страница вернула 500.
источник
Попробуйте это, это должно решить вашу проблему
В config.php добавьте www pre в свой domain.com. Например:
Добавьте это в свой файл .htaccess
источник
Для меня оказалось, что я устанавливал
Access-Control-Allow-Origin
заголовок ответа на определенный (и правильный),host.com
ноhttp://host.com
вместо этого его нужно было вернуть как . Что делает firefox? Он молча проглатывает запрос GET и возвращает статус 0 в XHR без вывода предупреждений на консоль javascript, тогда как для других подобных сбоев он по крайней мере что-то говорит. Ай ай.источник
Для отладки проверьте журналы сервера, если это возможно. Firefox возвращает ошибки CORS в консоли по целому ряду причин.
Одной из причин является также плагин uMatrix (и, я полагаю, NoScript и тому подобное).
источник
Я столкнулся с подобной проблемой, и я думаю, что можно зарегистрировать, как я ее исправил:
У меня есть система, построенная в основном на Symfony 3. Для самообучения и повышения производительности я решил написать несколько скриптов с использованием GoLang, а также API с открытым доступом.
My Go API ожидает параметры формата Json, а также возвращает ответ формата Json
Чтобы вызвать те GoApi, которые я обычно использую, $ .ajax (jQuery) Первый тест был обманом: всплывающее окно (не) знаменитое "Cross-Origin Request Blocked"! Затем я попытался установить «Access-Control-Allow-Origin: *» на apache conf, htaccess, php, javascript и везде, где я мог найти в google!
Но, даже, такая же досадная ошибка !!!
Решение было простым: мне пришлось отправлять запросы «POST» вместо «GET».
Для этого мне пришлось настроить как GoLang, так и JavaScript для использования GET! Как только это будет сделано, для меня больше не будет заблокированных запросов Cross-Origin !!!
Надеюсь, поможет
PS:
Я использую apache и Vhost, в блоке каталогов у меня
Помните: «*» означает, что вы будете принимать запросы от кого угодно !!! (Что может быть связано с недостатком безопасности) В моем случае это нормально, потому что это будет публичный API
PS2: Мои заголовки
Заголовки ответа
Заголовки запроса (469 B)
источник
Если вышеупомянутые ответы не помогают, проверьте, запущен ли внутренний сервер или нет, поскольку в моем случае произошел сбой сервера, и эта ошибка оказывается полностью вводящей в заблуждение.
источник
В моем случае это был мой ADBLOCKER ! По какой-то причине он был включен на моем локальном хосте и вызывал эту ошибку в Firefox.
Отключение его или удалить в плагин должен это исправить.
В вашем случае это может быть не блокировщик рекламы, а другой плагин Firefox. Сначала протестируйте его в режиме инкогнито без плагинов, чтобы определить, является ли это проблемой, а затем систематически отключите плагины, пока не найдете виновника.
источник
Файлы говорят сами за себя. Сделайте файл, назовите его как угодно. В моем случае jq2.php.
Теперь мы подключим движок, создадим файл, назовем его как хотите. В моем случае это gs.php.
Я постарался сделать пример как можно более простым. И поскольку он выполняет ссылку при каждом нажатии клавиши, квота вашего API будет израсходована довольно быстро.
Конечно, нет конца тому, что мы можем делать, например, помещать данные в таблицу, отправлять в базу данных и так далее.
источник