SCRIPT5: доступ запрещен в IE9 для xmlhttprequest - PullRequest
46 голосов
/ 26 апреля 2011
var xhttp=new XMLHttpRequest();
xhttp.open('GET', 'foo.xml', false);

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

Мой JavaScript выглядит правильно, и Firefox делает то, что, как я думаю, должен.

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

Ответы [ 11 ]

5 голосов
/ 31 декабря 2012

Этот пример иллюстрирует, как использовать AJAX для получения ресурсов с любого веб-сайта.это работает через браузеры.Я проверил его на IE8-IE10, Safari, Chrome, 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;
5 голосов
/ 27 апреля 2011

Вероятно, у вас есть метка сети в локальном файле.См. http://blogs.msdn.com/b/ieinternals/archive/2011/03/23/understanding-local-machine-zone-lockdown-restricted-this-webpage-from-running-scripts-or-activex-controls.aspx для объяснения.

3 голосов
/ 15 апреля 2013

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

2 голосов
/ 10 ноября 2012

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

1 голос
/ 03 декабря 2012

Скорее всего, вам нужно, чтобы Javascript обслуживался по SSL.

Источник: https://www.parse.com/questions/internet-explorer-and-the-javascript-sdk

0 голосов
/ 03 сентября 2014
  $.ajax({
        url: '//freegeoip.net/json/',
        type: 'POST',
        dataType: 'jsonp',
        success: function(location) {
            alert(location.ip);
        }
    });

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

0 голосов
/ 22 октября 2013

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

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

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

0 голосов
/ 20 июля 2013

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

$.ajax({
    url: YOUR_XML_FILE
    aync: false,
    success: function (data) {   
        // Store data into a variable
    },
    dataType: YOUR_DATA_TYPE,
    complete: ON_COMPLETE_FUNCTION_CALL
});
0 голосов
/ 22 октября 2012

Возможно, вы запрашиваете внешний ресурс, в этом случае 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);
}
...