CORS не работает в Firefox

Я пытаюсь загрузить данные в диалог jQuery через ajax, но в Firefox запрос не выполняется (34.0.5). Работает нормально, и я не получаю жалоб в Chrome и Safari.

Мой Apache Conf содержит:

Header set Access-Control-Allow-Origin "*"Header set Access-Control-Allow-Methods: "PUT, GET, POST, DELETE, OPTIONS"Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept"

JQuery это просто:

$('#dialog').load('example.php', function() { $('#dialog').dialog('open'); });

Firefox отвечает следующей ошибкой консоли:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://www.example.com/example.php. This can be fixed by moving the resource to the same domain or enabling CORS.

Изучая заголовки ответа из запроса ajax, они кажутся целыми и соответствуют тому, что объявлено в apache. Должен ли я включить некоторые другие директивы или изменить конфигурацию каким-либо образом, чтобы это работало?

ОБНОВЛЕНИЕ: в корне проблемы — факт, что я хотел бы оба example.com а также www.example.com функционировать так же. У рассматриваемого сайта всегда есть тег в шапке <base href="www.example.com" /> в обоих случаях, поскольку это является частью структуры сайта по умолчанию. С тех пор я обнаружил, что удаление этой ссылки позволяет ajax-запросу работать на example.com, даже если он все еще специально вызывает ресурс из субдомена www.

Интересно, что многие аспекты заголовков запроса и ответа меняются при удалении этого тега. Для тех, кто может иметь представление о последствиях здесь, я вставляю заголовки запроса и ответа ниже.

Вот заголовки с <base> тег удален В этом случае вызов ajax прошел успешно:

ОТВЕТ

    HTTP/1.1 200 OK
Date: Sun, 18 Jan 2015 22:11:04 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.5
Set-Cookie: PHPSESSID=xxx; path=/; HttpOnly
language=en; expires=Tue, 17-Feb-2015 22:11:04 GMT; Max-Age=2592000; path=/; domain=www.example.com
currency=CAD; expires=Tue, 17-Feb-2015 22:11:04 GMT; Max-Age=2592000; path=/; domain=www.example.com
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, public
Pragma: no-cache
Content-Encoding: gzip
access-control-allow-methods: PUT, GET, POST, DELETE, OPTIONS
access-control-allow-origin: *
access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept
Content-Length: 1515
Connection: close
Content-Type: text/html; charset=utf-8

ЗАПРОС

    GET /example.php HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:34.0) Gecko/20100101 Firefox/34.0 FirePHP/0.7.4
Accept: text/html, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://example.com/
Origin: http://example.com
x-insight: activate
Connection: keep-alive
Cache-Control: max-age=0

А вот и заголовки с <base> тег не поврежден Эти заголовки отражают сценарий сбоя вызова ajax. Стоит отметить, что в поле «Местоположение» в заголовке ответа указано «https», хотя это не происходило через соединение https:

ОТВЕТ

    HTTP/1.1 302 Found
Date: Sun, 18 Jan 2015 22:12:26 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.5
Set-Cookie: PHPSESSID=xxx; path=/; HttpOnly
language=en; expires=Tue, 17-Feb-2015 22:12:26 GMT; Max-Age=2592000; path=/; domain=www.example.com
currency=CAD; expires=Tue, 17-Feb-2015 22:12:26 GMT; Max-Age=2592000; path=/; domain=www.example.com
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, public
Pragma: no-cache
Status: 302
Location: https://www.example.com/index.php
access-control-allow-methods: PUT, GET, POST, DELETE, OPTIONS
access-control-allow-origin: *
access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept
Content-Length: 0
Connection: close
Content-Type: text/html

ЗАПРОС

    OPTIONS /example.php HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:34.0) Gecko/20100101 Firefox/34.0 FirePHP/0.7.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Origin: http://example.com
Access-Control-Request-Method: GET
Access-Control-Request-Headers: x-requested-with
x-insight: activate
Connection: keep-alive
Cache-Control: max-age=0

5

Решение

В соответствии с MDN, Вы не можете использовать подстановочный знак для «запросов с учетными данными», поэтому, возможно, ваш запрос попадает в эту категорию.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector