Ajax 网络错误:XMLHttpRequest异常101

Ajax 网络错误:XMLHttpRequest异常101,ajax,xmlhttprequest,Ajax,Xmlhttprequest,我得到了这个错误 网络错误:XMLHttpRequest异常101 尝试从一个站点获取XML内容时 这是我的密码: var xmlhttp; if(window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } if (xmlhttp==null) { alert ("Your browser does not support XMLHTTP!"); ret

我得到了这个错误

网络错误: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);

有人有解决方案吗?

当我返回不正确的XML(我在根节点中放置了一个属性)时,类似的事情发生在我身上。如果这对任何人都有帮助。

如果您提供的
url
位于服务器外部,并且服务器不允许您发送请求,则您存在权限问题。如果服务器不明确允许您使用
XMLHttpRequest
,则无法从另一台服务器访问数据

更新:意识到这在谷歌上是一个答案,我试图找到一些关于这个错误的文档。这是令人惊讶的困难

但是,有一些背景信息和步骤需要解决。具体来说,这里提到了这个错误:

只要服务器配置为允许来自web应用程序源的请求,XMLHttpRequest就可以工作。否则,将引发无效的\u访问\u错误异常

我们在这里看到的似乎是对无效访问错误的解释


要解决此问题,必须将接收请求的服务器配置为允许源服务器。这在中进行了描述。

即使url仅表示远程服务器,也可以应用不能使用XMLHttpRequest从其他服务器访问数据的限制

因此: url=”http://www.myserver.com/webpage.html“

可能会失败

但是: url=“/webpage.html”


成功-即使请求是从www.myserver.com发出的

我发现了一篇包含两种不同解决方案的非常好的文章

  • 第一个实现jQuery和JSONP,解释它有多简单
  • 第二种方法是通过PHP调用重定向。非常简单,非常好
    解决这个问题的另一个现代方法是跨来源资源共享。 HTML5提供了这一功能。您可以在此CORS_请求中“包装”XMLhttp请求,然后 如果目标浏览器支持此功能,您可以使用它,并且不会有任何问题

    编辑: 此外,我必须补充的是,有很多原因可能导致这个问题。 这不仅是跨域限制,而且是WEB服务的WEB.CONFIG中的错误设置

    示例IIS(.NET):

    要启用来自外部源的HTTP访问(在我的例子中是一个带有CORS请求的已编译Phonegap应用程序),您必须将其添加到WEB.CONFIG中

        <webServices>
            <protocols>
                <add name="HttpGet"/>
                <add name="HttpPost"/>
            </protocols>
        </webServices>
    
    
    
    另一种情况:


    我有两个Web服务正在运行。。。一个在端口80上,一个在端口90上。这也给了我一个XML HTTP请求错误。我甚至不知道为什么:)。尽管如此,我认为这可以帮助许多经验不足的读者

    请求被中止,因为它是缓存的或以前被请求的?似乎XMLHttpRequest Exception 101错误可能是由于几个原因引发的。我发现,当我多次发送具有相同URL的XMLHttpRequest时,就会发生这种情况。(通过在URL末尾添加一个缓存失败无意义字符串来更改URL,允许重复该请求。--我本不打算重复该请求,但程序中的事件导致该请求发生,并导致此异常)

    在重复请求的情况下不返回正确的responseText或responseXML是一个错误(可能是webKit)

    当这个异常发生时,我确实得到了一个onload事件,readyState==4,请求对象状态=0,responseText==“”和responseXML==null。这是服务器允许的跨域请求

    这是在使用webKit/533.1的Android 2.3.5系统上实现的

    有人有关于异常的含义的文档吗

    xmlhttp.open("GET",url, true);
    

    将异步部分设置为true

    这看起来像是一个跨域问题请说明您在哪个浏览器和/或平台上看到问题(我在Android 2.3.7和WebKit 533.1上遇到了例外[本文]是死链接。谢谢!已删除死链接。位于另一个域/站点上的URL不一定是权限问题。如果目标服务器允许,可以使用XMLHttpRequest进行跨站点请求。5年后(截至2015年),我觉得这有点有趣这是谷歌在这个问题上的第一次尝试,答案是谷歌有很多关于它的信息;)。如果我们在共享服务器上,不能请求更改权限,我们有什么选择?如果目标服务器允许,XMLHttpRequest可以用于访问其他服务器的数据(几年前它不能)。