使用IE9进行跨域AJAX请求

Jac*_*own 5 ajax jquery internet-explorer jsonp

除非请求dataType设置为"jsonp"或"script",否则不会在IE9中执行跨域AJAX请求(使用jQuery 1.7.2创建).

我在构建请求时发现了这个问题,我不关心响应,并且未指定dataType(是的,我知道我应该关心响应).

所以,例如,这将工作:

$.ajax({
    url: "http://www.google.com",
    type: "GET", // or "POST"
    dataType: 'jsonp'
});
Run Code Online (Sandbox Code Playgroud)

但这不会:

$.ajax({
    url: "http://www.google.com",
    type: "GET" // or "POST"
});
Run Code Online (Sandbox Code Playgroud)

通过"工作"我的意思是我看到在Firebug或F12中发出的HTTP请求.

这两个请求都适用于其他浏览器 设置jQuery.support.cors = true;不会影响成功,也不会将crossDomain设置为true,也不会将cache设置为false(在AJAX请求中).

为什么AJAX请求的成功取决于IE中请求的dataType?我能理解为什么它会影响我处理任何返回数据的能力; 我也理解一些服务器可能会拒绝对某个dataType的所有请求(但这显然不是这种情况).

Den*_*ret 1

这不是数据类型的问题,而是在浏览器中明确验证服务器是否确实想要回答此查询的问题。

通过实施JSONP,您可以强制服务器提供非常具体的答案(包括方法调用)。

请注意,现在还有其他解决方案:您可以在服务器上设置特定标头(请参阅https://developer.mozilla.org/en-US/docs/HTTP_access_control