«разрешение отклонено» .load текущая страница в IE - PullRequest
0 голосов
/ 16 августа 2011

Скажем, я тестирую сайт в подпапке сервера, например, http://12.123.12.12/domain.tld/.Когда я нахожусь на корневой странице, я могу счастливо выполнить

$('#dummy').load('http://12.123.12.12/domain.tld/page.html')

(функция обратного вызова, предупреждающая об успешном сообщении, сработает.) Однако, если я попытаюсь

$('#dummy').load('http://12.123.12.12/domain.tld/folder/page.html')

Iполучить ошибку «Отказано в доступе» только в IE (такая же ошибка политики источника).

Я получу такой же успех / сбой, если опущу IP-адрес, то есть $('#dummy').load('/domain.tld/...').Я понятия не имею, почему IE будет вести себя так;это просто подпапка.(На самом деле это Wordpress с плагином расширения .html, но я не вижу в этом проблемы.)

edit: Оказывается, я получаю отказано в разрешении только тогда, когдазагрузка страницы, которую я сейчас просматриваю.Например, предположим, что мой браузер указывает на http://12.123.12.12/domain.tld/folder/page.html, если я тогда попробую

$('#dummy').load('http://12.123.12.12/domain.tld/folder/page.html')

, то произойдет ошибка.

Ответы [ 2 ]

1 голос
/ 17 августа 2011

Итак, как описано, точная проблема в том, что IE не нравится загружать URL, если он уже был на нем. Если в браузере установлен http://123.12.12.12/domain.tld/page.html для любой page.html в любой структура подкаталога, следующий jQuery завершится ошибкой:

$('#container').load('http://123.12.12.12/domain.tld/page.html');

Ошибка характеризуется ошибкой «Отказано в доступе», обычно связанной с той же политикой происхождения.

Чтобы устранить проблему, добавьте фиктивный объект к запросу, что заставляет jQuery отправлять его как запрос POST (а не GET по умолчанию), например ::

$('#container').load('http://123.12.12.12/domain.tld/page.html', {one : 1});

и нагрузка теперь работает как положено.

1 голос
/ 16 августа 2011

В доступе отказано из той же политики происхождения .Доступ к данным из папки не будет проблемой.Я предполагаю, что адрес вашего браузера не равен http://12.123.12.12/domain.tld.

...