我收到此错误
NETWORK_ERROR:XMLHttpRequest例外101
尝试从一个站点获取XML内容时。
这是我的代码:
var xmlhttp;
if(window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
if (xmlhttp==null) {
alert ("Your browser does not support XMLHTTP!");
return;
}
xmlhttp.onReadyStateChange=function() {
if(xmlhttp.readyState==4) {
var value =xmlhttp.responseXML;
alert(value);
}
}
xmlhttp.open("GET",url,false);
xmlhttp.send();
//alert(xmlhttp.responseXML);
}
xmlhttp.open("GET",url,false);
xmlhttp.send(null);
有人有解决方案吗?
答案 0 :(得分:24)
如果您提供的url
位于服务器外部,并且服务器未允许您发送请求,则表示您具有权限问题。您无法使用XMLHttpRequest
从其他服务器访问数据,而服务器不会明确允许您这样做。
更新:实现这一点现在可以作为Google的答案显示,我试图找到有关此错误的一些文档。这真是太难了。
This article但是,有一些背景信息和步骤要解决。具体来说,它在这里提到了这个错误:
只要服务器配置为允许来自Web应用程序源的请求,XMLHttpRequest就可以工作。否则,抛出INVALID_ACCESS_ERR异常
INVALID_ACCESS_ERR 的解释似乎就是我们在这里看到的。
要解决此问题,必须将接收请求的服务器配置为允许原点。这在more details at Mozilla。
中有所描述答案 1 :(得分:4)
即使URL只是暗示远程服务器,也无法应用使用XMLHttpRequest从其他服务器访问数据的限制。
所以: url =“http://www.myserver.com/webpage.html”
可能会失败,
但: url =“/ webpage.html”
成功 - 即使请求来自www.myserver.com
答案 2 :(得分:2)
当我返回错误的XML(我在根节点中放置了一个属性)时,我发生了类似的事情。如果这有助于任何人。
答案 3 :(得分:2)
请求已中止,因为它已被缓存或之前请求过了?由于多种原因,似乎可能会抛出XMLHttpRequest异常101 错误。我发现当我多次使用相同的URL发送XMLHttpRequest时会发生这种情况。 (通过在URL的末尾附加缓存失败的无意义字符串来更改URL允许重复请求。 - 我不打算重复请求,但程序中的事件导致它发生并导致此异常)。
在重复请求的情况下,不返回正确的responseText或responseXML是一个错误(可能是webKit)。
当发生此异常时,我确实得到了一个onload事件,其中readyState == 4,请求对象state = 0,responseText ==“”和responseXML == null。这是一个跨域请求,服务器允许。
这是在使用webKit / 533.1
的Android 2.3.5系统上任何人都有关于异常应该是什么意思的文件吗?
答案 4 :(得分:1)
我发现了一篇非常好的文章,有两种不同的解决方案。
答案 5 :(得分:1)
xmlhttp.open("GET",url, true);
将异步部分设置为true
答案 6 :(得分:0)
另一种解决此问题的现代方法是Cross Origin Ressource Sharing。 HTML5提供此功能。你可以"包装"你的XMLhttp请求在这个CORS_request和 如果目标浏览器支持此功能,您可以使用它并且不会有任何问题。
编辑: 另外,我必须补充说,有很多原因导致这个问题。 您的Web服务的WEB.CONFIG中不仅存在跨域限制,而且只是错误的设置。
示例IIS(.NET):
要从外部源启用HTTP访问(在我的情况下是带有CORS请求的已编译的Phonegap应用程序),您必须将其添加到您的WEB.CONFIG
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
另一种情况:
我有两个webservices正在运行......一个在端口80上,一个在端口90上。这也给了我一个XML HTTP请求错误。我甚至不知道为什么:)。不过,我认为这可以帮助许多没有经验丰富的读者。