我遇到了这个问题.我想这是某种 IE 错误,但我想确定一下.
所以问题是.为什么 IE10 XmlHttpRequest.status 返回 0 而不是 401?
var xmlhttp=new XMLHttpRequest();xmlhttp.onreadystatechange=函数(){如果(xmlhttp.readyState==4){document.getElementById("rescode").innerHTML="请求完成,状态为:"+xmlhttp.status;}}xmlhttp.open("GET","http://hosting.gregy.cz/cors/",true);xmlhttp.send();在这里查看插件:http://plnkr.co/edit/E2lCflPDHHaQi7t79IeM?p=previewp>
此代码触发 CORS 请求,该请求始终返回 401.Firefox 和 chrome 在状态属性中正确返回 401,但 IE10 返回 0.此问题破坏了我用于项目的身份验证处理方法.
谢谢
我已经用 onload 和 onerror 事件处理程序修改了 plunker(来自 monsur 评论的提示),但结果仍然相同.
我还确定 IE10 没有选择兼容模式.(来自 cernunnos 评论的提示)
这似乎是 IE10 中的一个错误 (https://connect.microsoft.com/IE/feedback/details/785990/ie-10-on-win8-does-not-assign-the-correct-status-to-xmlhttprequest-when-the-result-is-401).
IE10 将 HTTP 状态 401 视为网络错误.控制台显示:
SCRIPT7002:XMLHttpRequest:网络错误 0x80070005,访问被拒绝根据 XMLHttpRequest Level 2 规范,如果设置了错误标志(例如由于网络错误),状态属性应该为零.然而,该规范还声明(http://www.w3.org/TR/XMLHttpRequest2/#infrastructure-for-the-send-method) 网络错误
<块引用>不包括指示某种类型错误的 HTTP 响应,例如作为 HTTP 状态码 410.
我认为很明显 HTTP 状态 401 不应因此被视为网络错误(因为它不在 Chrome、Firefox 和 Safari 中)并且这是 IE10 中的错误.
I have hit a wall with this issue. I guess it is some kind of IE bug but I want to be sure.
So the question is. Why does IE10 XmlHttpRequest.status returns 0 instead of 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();
See plunker here: http://plnkr.co/edit/E2lCflPDHHaQi7t79IeM?p=preview
This code fires a CORS request which always returns 401. Firefox and chrome correctly return 401 in status attribute but IE10 returns 0. This issue breaks authentication handling methods I use for my project.
Thank you
Edit:
I have modified the plunker with onload and onerror event handlers (tip from monsur's comment), but the result is still the same.
I have also made sure IE10 has no compatibility mode selected. (tip from cernunnos's comment)
This appears to be a bug in IE10 (https://connect.microsoft.com/IE/feedback/details/785990/ie-10-on-win8-does-not-assign-the-correct-status-to-xmlhttprequest-when-the-result-is-401).
IE10 is treating HTTP status 401 as a network error. The console shows:
SCRIPT7002: XMLHttpRequest: Network Error 0x80070005, Access is denied
According to the XMLHttpRequest Level 2 specification the status attribute should be zero if the error flag is set (for example because of a network error). However the specification also states (http://www.w3.org/TR/XMLHttpRequest2/#infrastructure-for-the-send-method) that a network error
does not include HTTP responses that indicate some type of error, such as HTTP status code 410.
I think it is clear that HTTP status 401 should not therefore be treated as a network error (as it is not in Chrome, Firefox and Safari) and that this is a bug in IE10.
这篇关于XmlHttpRequest 状态 0 而不是 IE 10 中的 401的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
即使在调用 abort (jQuery) 之后,浏览器也会等待Browser waits for ajax call to complete even after abort has been called (jQuery)(即使在调用 abort (jQuery) 之后,浏览器也会等待 ajax 调用
JavaScript innerHTML 不适用于 IE?JavaScript innerHTML is not working for IE?(JavaScript innerHTML 不适用于 IE?)
XMLHttpRequest 无法加载,请求的资源上不存在“AXMLHttpRequest cannot load, No #39;Access-Control-Allow-Origin#39; header is present on the requested resource(XMLHttpRequest 无法加载,请求的资
XHR HEAD 请求是否有可能不遵循重定向 (301 302)Is it possible for XHR HEAD requests to not follow redirects (301 302)(XHR HEAD 请求是否有可能不遵循重定向 (301 302))
NETWORK_ERROR:XMLHttpRequest 异常 101NETWORK_ERROR: XMLHttpRequest Exception 101(NETWORK_ERROR:XMLHttpRequest 异常 101)
XMLHttpRequest 206 部分内容XMLHttpRequest 206 Partial Content(XMLHttpRequest 206 部分内容)