Javascript XmlHttpRequest状态0而不是IE 10中的401

Javascript XmlHttpRequest状态0而不是IE 10中的401,javascript,xmlhttprequest,cors,internet-explorer-10,Javascript,Xmlhttprequest,Cors,Internet Explorer 10,我在这个问题上遇到了麻烦。我想这是某种IE病毒,但我想确定一下 所以问题是。为什么IE10 XmlHttpRequest.status返回0而不是401 var xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4) { document.getElementById("rescode").innerHTML="Request c

我在这个问题上遇到了麻烦。我想这是某种IE病毒,但我想确定一下

所以问题是。为什么IE10 XmlHttpRequest.status返回0而不是401

var xmlhttp=new XMLHttpRequest();

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4)
    {
      document.getElementById("rescode").innerHTML="Request completed with status: "+xmlhttp.status;
    }
  }
xmlhttp.open("GET","http://hosting.gregy.cz/cors/",true);
xmlhttp.send();
请参见此处的plunker:

此代码触发一个CORS请求,该请求始终返回401。Firefox和chrome在status属性中正确返回401,但IE10返回0。这个问题破坏了我在项目中使用的身份验证处理方法

多谢各位

编辑:

我已经用onload和onerror事件处理程序修改了plunker(来自monsur评论的提示),但是结果仍然是一样的


我还确保IE10没有选择兼容模式。(来自Cernunos评论的提示)

这似乎是IE10()中的一个bug

IE10将HTTP状态401视为网络错误。控制台显示:

SCRIPT7002: XMLHttpRequest: Network Error 0x80070005, Access is denied
根据XMLHttpRequest级别2规范,如果设置了错误标志(例如,由于网络错误),则status属性应为零。但是,该规范还声明()存在网络错误

不包括指示某种类型错误的HTTP响应,例如 作为HTTP状态代码410


我认为很明显,HTTP状态401不应因此被视为网络错误(因为它不在Chrome、Firefox和Safari中),这是IE10中的一个bug。

我今天遇到了这个问题。在尝试了一些变通方法和谷歌搜索之后,我最终来到了这里。 结果只是一个安全级别的设置。
无论您的网站位于哪个安全区域(Internet选项>安全),请确保在区域中启用以下设置:杂项>跨域访问数据源。

@rekire:CORS是规避SOP的一种方法。这不是重复的。IE10超级支持CORS,并且您的服务器响应似乎有必要的头,您确定没有在兼容模式下运行IE10吗?可能是IE9/8/7浏览器模式/文档模式?尝试附加到较新的
onload
onerror
方法,查看每个方法中的状态。是否有任何方法可以检测到它们生成的错误?此外,我遇到了相同的问题,但得到了一个带有“未定义”的“404”—这让我发疯了!这个错误似乎存在于IE11中。有什么解决方案吗?谢谢,这很有帮助。这也是Microsofts bug report的accepted answers链接中提到的解决方法。但我无法在我的案例中设置此设置。如何在代码中处理它?