«Отказано в доступе» с помощью Internet Explorer и jQuery - PullRequest
24 голосов
/ 02 июня 2010

Я пытаюсь выполнить вызов AJAX с помощью jQuery и $.post в Internet Explorer, но все, что я получаю, это сообщение об ошибке «Отказано в доступе». Проблема довольно странная, поскольку она возникает только тогда, когда я захожу на страницу после того, как я был на любой другой странице.

Например, я набираю URL в адресной строке и позволяю IE загрузить страницу. Затем я нажимаю кнопку, чтобы скрипт начал загружать данные JSON. (Сценарий, предоставляющий данные, находится на том же сервере, и я обращаюсь к нему с помощью относительного URL, поэтому использование другого домена здесь не проблема. Даже пытался использовать абсолютный URL с той же хост-частью.)

Но когда я обновляю страницу, а потом снова пробую, она работает! То же самое, когда я захожу на эту страницу с другой страницы. Сначала ничего не работает, но когда я нажимаю «обновить», все в порядке.

IE выдает мне сообщение об ошибке «Отказано в доступе», в то время как в любом другом браузере я не замечаю такого поведения. Поскольку я перепробовал много вещей и до сих пор не могу представить, в чем проблема, я хотел бы спросить вас, как вы думаете, в чем проблема?

редактирование: Небольшой пример:

test.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de"> 
    <head> 
        <script type="text/javascript" src="/ietest/jquery.js"></script> 
        <script type="text/javascript" src="/ietest/test.js"></script> 
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    </head> 
    <body> 
        <a href="#">Test</a>
    </body> 
</html>

ajax.html

It works!

test.js

$(document).ready(function(){
    $( 'a' ).click(function(){
        $.post( '/ietest/ajax.html', function( data ) {
            alert( data );
        });
    });
});

Попробуйте здесь: http://t1318.greatnet.de/ietest/test.html

Ответы [ 3 ]

31 голосов
/ 02 июня 2010

Из сообщения на форуме jquerys здесь вы должны иметь мета типа контента в качестве первого элемента в вашем теге head.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de"> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script type="text/javascript" src="/ietest/jquery.js"></script> 
        <script type="text/javascript" src="/ietest/test.js"></script>  
    </head> 
    <body> 
        <a href="#">Test</a>
    </body> 
</html>
0 голосов
/ 22 февраля 2019

В моем случае смена версии jquery сработала. Вместо использования версии 1.9.1, сейчас я использую 1.12.4, и она работает.

0 голосов
/ 02 июня 2010

Если это локальный (localhost), то по соображениям безопасности вам нужен полный путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...