CORS在我的应用程序中完美适用于Chrome,Firefox。使用此插件https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
我能够获得在IE中工作的CORS请求,如下所示:
$.ajax({
url: url,
type:"POST",
dataType: "json"
});
但是当我尝试在POST请求中发送数据时,例如:
$.ajax({
url: url,
type:"POST",
dataType: "json",
data: {test: 5}
});
它不起作用。有没有人设法让IE发出包含POST数据的CORS请求?
谢谢!
答案 0 :(得分:0)
我注意到在jQuery-ajaxTransport-XDomainRequest源代码中,传递userOptions.data的send函数调用被注释掉了,并且活动的send()调用没有参数:
我遇到了与POST相同的问题,没有数据进入服务器。所以我用数据调用取消注释send:
xdr.send(userOptions.data);
//xdr.send();
然而它仍然没有发送数据。所以我更改了' POST'到' GET 并更新我的服务器代码来处理它。那真的有用了!我没有做更多的测试,我不确定GET是否可以接受我正在开发的代码。
更新:我进一步测试并使用send()或send(userOptions.data)似乎对IE没有任何影响。正是GET的改变让它发挥作用,所以如果你必须在你的ajax代码中使用POST,POST仍然是一个问题。
由于我是新跨域ajax发布数据(IE是问题),我希望其他人发布他们的发现,以便它适用于POST和GET。谢谢你的帮助!
答案 1 :(得分:0)
jQuery-ajaxTransport-XDomainRequest 实现,至少截至今天,在几个方面是有缺陷的,尤其是它不会在POST中发送任何数据。 我建议使用此插件,而不是我们在https://github.com/jaubourg/ajaxHooks/blob/master/src/xdr.js
中取得了很好的效果我还推荐阅读本文,该文章解释了Microsoft实施XDomainRequest的所有缺陷和局限: http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx
有关同一主题的帖子,请参阅此主题:CORS with jQuery and XDomainRequest in IE8/9