Подтвердить что ты не робот

SCRIPT5: доступ запрещен в IE9 на xmlhttprequest

var xhttp=new XMLHttpRequest();
xhttp.open('GET', 'foo.xml', false);

F12 всплывает: SCRIPT5: Доступ запрещен. на строке 95, которая представляет собой строку xhttp.open.

Мой JavaScript кажется хорошо сформированным, и Firefox делает то, что я думаю, что он должен.

Я прочитал много вопросов, очень похожих на этот, поэтому я проверил одну и ту же исходную политику, но я не вижу, как это применимо, поскольку foo.xml находится в том же каталоге, что и html файл. Я открыл разрешения на создание сценариев в своей локальной интрасети и сказал МакАфи о том, чтобы провести пятиминутный перерыв, чтобы быть уверенным. Я даже пытался запустить IE в качестве администратора, так что это не может быть проблемой с разрешениями? Зачем еще IE запрещал доступ к локальному файлу?

4b9b3361

Ответ 3

В этом примере показано, как использовать AJAX для загрузки ресурсов с любого веб-сайта. он работает в браузерах. Я тестировал его на IE8-IE10, сафари, хром, firefox, opera.

if (window.XDomainRequest) xmlhttp = new XDomainRequest();
else if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest();
else xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

xmlhttp.open("GET", "http://api.hostip.info/get_html.php", false);
xmlhttp.send();

hostipInfo = xmlhttp.responseText.split("\n");
var IP = false;
for (i = 0; hostipInfo.length >= i; i++) {
    if (hostipInfo[i]) {

        ipAddress = hostipInfo[i].split(":");
        if (ipAddress[0] == "IP") {
            IP = ipAddress[1];
        }
    }
}
return IP;

Ответ 4

В IE7, IE8 и IE9 просто перейдите в Настройки- > Свойства обозревателя- > Безопасность- > Пользовательский уровень и измените параметры безопасности в разделе "Разное", установите "Доступ к источникам данных по доменам" в "Включить".

Ответ 5

Это сообщение об ошибке (SCRIPT5: Access denied.) также может быть встречено, если целевая страница метода .replace не найдена (я неправильно ввел имя страницы). Я знаю, потому что это произошло со мной, поэтому я пошел искать дополнительную информацию о значении сообщения об ошибке.

Ответ 7

Я думаю, что проблема в том, что файл находится на вашем локальном компьютере, а IE запрещает доступ, потому что если он позволяет скриптам иметь доступ к файлам на компьютере, на котором работает браузер, это будет ОГРОМНОЕ отверстие безопасности.
Если у вас есть доступ к серверу или другому компьютеру, который вы могли бы использовать как один, возможно, вы могли бы попробовать поместить файлы на него, а затем запустить сценарии, как с веб-сайта.

Ответ 8

Возможно, вы запрашиваете внешний ресурс, в этом случае IE нужен объект XDomain. См. Пример кода ниже, как сделать запрос ajax для всех браузеров с перекрестными доменами:

Tork.post = function (url,data,callBack,callBackParameter){
    if (url.indexOf("?")>0){
        data = url.substring(url.indexOf("?")+1)+"&"+ data;
        url = url.substring(0,url.indexOf("?"));
    }
    data += "&randomNumberG=" + Math.random() + (Tork.debug?"&debug=1":"");
    var xmlhttp;
    if (window.XDomainRequest)
    {
        xmlhttp=new XDomainRequest();
        xmlhttp.onload = function(){callBack(xmlhttp.responseText)};
    }
    else if (window.XMLHttpRequest)
        xmlhttp=new XMLHttpRequest();
    else
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200){
            Tork.msg("Response:"+xmlhttp.responseText);
            callBack(xmlhttp.responseText,callBackParameter);
            Tork.showLoadingScreen(false);
        }
    }
    xmlhttp.open("POST",Tork.baseURL+url,true);
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xmlhttp.send(data);
}

Ответ 9

Я столкнулся с аналогичной проблемой в IE10. У меня было обходное решение, используя запрос jQuery ajax для извлечения данных:

$.ajax({
    url: YOUR_XML_FILE
    aync: false,
    success: function (data) {   
        // Store data into a variable
    },
    dataType: YOUR_DATA_TYPE,
    complete: ON_COMPLETE_FUNCTION_CALL
});

Ответ 10

  $.ajax({
        url: '//freegeoip.net/json/',
        type: 'POST',
        dataType: 'jsonp',
        success: function(location) {
            alert(location.ip);
        }
    });

Этот код будет работать и на сайтах https

Ответ 11

Откройте инструмент разработчика Internet Explorer, Инструменты → инструменты разработчика F12. (Я думаю, вы также можете нажать F12, чтобы получить его)

Измените Режим документа на Стандарты. (Страница будет автоматически обновляться, если вы измените Режим документа)

Проблема должна быть исправлена. Наслаждайтесь