Open
Description
原因
IE8和IE9在实现跨域请求的时候使用XDomainRequest自己实现了一套,所以即使是使用jquery1.9.1版本也无法直接兼容IE8,IE9的跨域请求。StackOverflow上的两个问答说得很清楚。
- http://stackoverflow.com/questions/24206782/ajax-call-not-working-in-ie8
- http://stackoverflow.com/questions/3362474/jquery-ajax-fails-in-ie-on-cross-domain-calls#11267937
解决方案
1. 自己抽象定义一个ajax请求函数
这个方法在上面第二个链接已经有人做好了,但是我嫌有点麻烦,不想在每个项目中都要定义这样一个函数吗?
2. 重定义jquery的$. ajaxTransport方法
有人已经做好了,详见这里。https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
不过使用它有几点非常需要注意
- 只能是GET或者是POST请求
- POST请求的数据类型必须是text/plain
- 只支持HTPP和HTTPS协议
- 请求主体和被请求接口协议必须相同,也就是大家要么都是HTTP,要么都是HTTPS
- 必须是异步的