Javascript IE8和IE9上的XDomainRequest与XMLHttpRequest
我对XMLHttpRequest和XDomainRequest的转世非常困惑,希望得到一些帮助。以下是我的发现:Javascript IE8和IE9上的XDomainRequest与XMLHttpRequest,javascript,xmlhttprequest,cross-domain,xdomainrequest,Javascript,Xmlhttprequest,Cross Domain,Xdomainrequest,我对XMLHttpRequest和XDomainRequest的转世非常困惑,希望得到一些帮助。以下是我的发现: IE8和IE9中的XDomainRequest似乎是某种XMLHttpRequest子类(?) XDomainRequest缺少“withCredentials” XDomainRequest缺少“onLoad”事件,强制您使用state和status IFs-EDIT:这并不完全正确。如果在IE8和IE9中实例化XDomainRequest,则onLoad可用。但是,如果在EI8或
- 通过获取加密密钥以及与其关联的会话id来获取(跨域)
- 使用此密钥加密我的用户密码(此处没有问题)
- 使用POST和x-www-form-urlencoded用户名以及加密密码登录到跨域(我在步骤1中获得了密钥)
- 首先是因为XDomainRequest:open(方法,url)只发送纯文本,而我的第三方应用程序需要表单(我可以编写一个过滤器/请求拦截器,但这不是重点)
- 因为我的会话id与加密密钥一起通过Set-Cookie头(步骤1)到达,在作为头登录时不会发送回跨域,因为XDomainRequest不公开头
XMLHTTPRequest 2
规范,所有浏览器都在XMLHTTPRequest
1级之上构建2级,微软创建了XDomainRequest
。所以XDomainRequest不是一个子类,这是一个非标准的IE特性
2) 是的,XDomainRequest缺少“withCredentials”。因为:
为了防止滥用用户的环境权限(例如Cookie、HTTP凭据、客户端证书等),请求将被删除Cookie和凭据,并将忽略任何身份验证挑战或在HTTP响应中设置Cookie指令。XDomainRequests不会在以前经过身份验证的连接上发送,因为某些Windows身份验证协议(例如NTLM/Kerberos)是基于每个连接而不是基于每个请求的
(四)
截至2014年,XDomainRequest似乎没有发送任何内容类型
根本没有头球。我不清楚这是什么时候改变的
等等等等。。。
我发布这个答案只是为了历史
不要使用XDomainRequest。这是一个丑陋且有缺陷的非标准功能。
更多信息请点击此处:
这一点不正确。在IE8/9中发送COR的唯一方法是使用非标准XDomainRequest
but IE8 and IE9 seems to have no problem using the XMLHttpRequest for cross domain