SCRIPT5:在xmlhttprequest上的IE9中拒绝访问

时间:2011-04-26 17:06:03

标签: javascript xmlhttprequest internet-explorer-9

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

F12 :SCRIPT5:访问被拒绝。在第95行,这是xhttp.open行。

我的JavaScript似乎格式正确,Firefox做了我认为应该做的事情。

我已经阅读了很多非常类似于此问题的问题,所以我查看了同源策略,但是我看不出它是如何应用的,因为foo.xml和它在同一个目录中html文件。我在我的本地Intranet上打开了脚本权限,并告诉迈克菲休息五分钟,这是肯定的。我甚至尝试以管理员身份运行IE,所以这不是真正的权限问题吗?为什么IE会被拒绝访问本地文件?

11 个答案:

答案 0 :(得分:13)

答案 1 :(得分:5)

答案 2 :(得分:5)

此示例说明如何使用AJAX从任何网站提取资源。它适用于各种浏览器。我已经在IE 8-IE 10,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;

答案 3 :(得分:3)

如果找不到.replace方法的目标页面(我输入的页面名称不正确),也会遇到此错误消息(SCRIPT5:访问被拒绝。)。我知道因为它刚好发生在我身上,这就是为什么我去搜索有关错误信息含义的更多信息的原因。

答案 4 :(得分:1)

在IE7,IE8和IE9上,只需转到“设置” - >“网络选项” - >“安全性” - >“自定义级别”,然后将“其他”设置为“跨域访问数据源”下的安全设置更改为“启用”。

答案 5 :(得分:1)

最有可能的是,您需要通过SSL提供Javascript。

来源:https://www.parse.com/questions/internet-explorer-and-the-javascript-sdk

答案 6 :(得分:0)

我认为问题在于该文件在您的本地计算机上,并且IE拒绝访问,因为如果它允许脚本访问运行浏览器的comp上的文件,那将是一个巨大的安全漏洞。
如果您可以访问可以作为一个服务器使用的服务器或其他组件,也许您可​​以尝试将文件放在那个文件上,然后像在网站上一样运行脚本。

答案 7 :(得分:0)

可能您正在请求外部资源,这种情况下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);
}

答案 8 :(得分:0)

我在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
});

答案 9 :(得分:-1)

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

此代码也适用于https网站

答案 10 :(得分:-3)

打开Internet Explorer Developer Tool, 工具 - > F12开发人员工具。 (我想你也可以按 F12 来获取它)

文档模式更改为标准。 (如果您更改文档模式),页面应自动刷新

应该修复问题。 享受