Skip to content

IE8和IE9跨域请求数据兼容性解决方案 #36

Open
@youngwind

Description

@youngwind

原因

IE8和IE9在实现跨域请求的时候使用XDomainRequest自己实现了一套,所以即使是使用jquery1.9.1版本也无法直接兼容IE8,IE9的跨域请求。StackOverflow上的两个问答说得很清楚。

  1. http://stackoverflow.com/questions/24206782/ajax-call-not-working-in-ie8
  2. 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

不过使用它有几点非常需要注意

  1. 只能是GET或者是POST请求
  2. POST请求的数据类型必须是text/plain
  3. 只支持HTPP和HTTPS协议
  4. 请求主体和被请求接口协议必须相同,也就是大家要么都是HTTP,要么都是HTTPS
  5. 必须是异步的

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions