SCRIPT5: доступ запрещен в IE9 для xmlhttprequest
var xhttp=new XMLHttpRequest();
xhttp.open('GET', 'foo.xml', false);
F12 выскакивает назад: SCRIPT5: доступ запрещен. в строке 95, которая является строкой xhttp.open.
Мой JavaScript выглядит хорошо сформированным, и Firefox делает то, что, я думаю, должен.
Я прочитал много вопросов, очень похожих на этот, поэтому я проверил ту же Политику происхождения, но я не вижу, как она будет применяться, учитывая, что файл foo.xml находится в том же каталоге, что и файл html. Я открыл разрешения для сценариев в своей локальной интрасети и сказал McAfee сделать пятиминутный перерыв, чтобы быть уверенным. Я даже пытался запустить IE от имени администратора, так что это не может быть проблемой с разрешениями, не так ли? Почему иначе IE будет отказано в доступе к локальному файлу?
11 ответов
Может быть, вы хотели бы проверить ссылки ниже:
Скорее всего, у вас есть метка сети в локальном файле. См. 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 для объяснения.
Этот пример иллюстрирует, как использовать 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;
В IE7, IE8 и IE9 просто перейдите в "Настройки" -> "Свойства обозревателя" -> "Безопасность" -> "Пользовательский уровень" и измените настройки безопасности в разделе "Разное" для "Доступ к источникам данных через домены", чтобы включить.
Это сообщение об ошибке (SCRIPT5: доступ запрещен.) Также может возникнуть, если целевая страница метода.replace не найдена (я неправильно ввел имя страницы). Я знаю, потому что это только что произошло со мной, поэтому я отправился на поиски дополнительной информации о значении сообщения об ошибке.
Скорее всего, вам нужно, чтобы Javascript обслуживался через SSL.
Источник: https://www.parse.com/questions/internet-explorer-and-the-javascript-sdk
Я столкнулся с подобной проблемой на 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
});
Я думаю, что проблема заключается в том, что файл находится на вашем локальном компьютере, и IE отказывает в доступе, потому что, если он разрешит сценариям иметь доступ к файлам на компе, на котором работает браузер, это будет ОГРОМНАЯ дыра в безопасности.
Если у вас есть доступ к серверу или другому компу, который вы могли бы использовать как один, возможно, вы могли бы попробовать поместить туда файлы, а затем запустить сценарии, как с веб-сайта.
Возможно, вы запрашиваете внешний ресурс, в этом случае 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);
}
$.ajax({
url: '//freegeoip.net/json/',
type: 'POST',
dataType: 'jsonp',
success: function(location) {
alert(location.ip);
}
});
Этот код также будет работать на сайтах https
Откройте инструмент разработчика Internet Explorer, Инструменты -> Инструменты разработчика F12. (Я думаю, вы также можете нажать F12, чтобы получить его)
Измените Режим документа на Стандарты. (Страница должна автоматически обновляться, если вы измените режим документа)
Проблема должна быть исправлена. наслаждаться