我对XMLHttpRequest和XDomainRequest转世非常困惑,并希望得到一些帮助。所以这是我的发现:
这个清单并不完整,正如我所说,这是基于我的发现。然而,这是混乱开始的地方。我有一个应用程序,我必须通过Ajax:
由于上述所有原因,我无法使用XDomainRequest执行此操作:
然而,如果在IE8和IE9中我实例化了一个XMLHttpRequest而忽略了here描述的所有这些检查,那么一切正常!好吧我没有得到onload事件,我不确定“withcredentials”的故事是什么,但IE8和IE9似乎没有问题使用XMLHttpRequest进行跨域。但为什么?这些都不矛盾吗?我只是想弄清楚这个问题,因为我担心在IE8和IE9中使用XMLHttpRequest可能会在某些时候回来咬人。当有人可以使用一个而不是另一个时,我可以要求一个明确的例子吗?更好的是,是否有任何更新IE8和IE9解决了这个问题?
任何帮助将非常感谢Yiannis
答案 0 :(得分:2)
首先请注意:
IE11弃用了XDomainRequest对象,但它不可用 IE11边缘模式。
1)什么是XDomainRequest以及为什么IE有此对象?几年前,W3C正在开发XMLHTTPRequest 2
规范所有浏览器构建级别2超过XMLHTTPRequest
级别1 Microsoft创建XDomainRequest
。所以 XDomainRequest不是子类,这是一个非标准的IE功能。
2)是的,XDomainRequest缺少" withCredentials"。这是因为:
为了防止滥用用户的环境权限(例如cookie,HTTP凭据,客户端证书等),请求将被剥夺cookie和凭据,并将忽略HTTP响应中的任何身份验证质询或Set-Cookie指令。 XDomainRequests不会在以前经过身份验证的连接上发送,因为某些Windows身份验证协议(例如NTLM / Kerberos)是基于每个连接而不是基于请求的。
4)
截至2014年,XDomainRequest似乎没有发送任何Content-Type 总而言之。当这种情况发生变化时,我并不清楚。
等等......等等...... 我发布这个答案只是为了历史。
不要使用XDomainRequest。这是一个丑陋且非标准的非标准功能。
更多信息:
答案 1 :(得分:0)
but IE8 and IE9 seems to have no problem using the XMLHttpRequest for cross domain
这一点不正确。在IE8 / 9中发送CORS的唯一方法是使用非标准的XDomainRequest。