Internet Explorer中的跨域POST请求ajax

我正在使用jQuery 1.7.2,并希望向另一个域发出POST请求。 它必须是POST请求。 但这在Internet Explorer中不起作用 (我试过IE9); 它适用于所有其他浏览器。

我有这个脚本:

 jQuery.support.cors = true; jQuery(function() { $.ajax({ crossDomain : true, cache: false, type: 'POST', url: 'http://someotherdomain/test.php', data: {}, success: function(da) { console.log(JSON.stringify(da)) }, error: function(jqxhr) { console.log('fail') console.log(JSON.stringify(jqxhr)) }, dataType: 'json' }); });  

我收回错误:

 {"readyState":0,"status":0,"statusText":"Error: Access denied.\r\n"} 

我的PHP文件如下所示:

  'yes')); 

Internet Explorer(包括IE9)不支持CORS 。 您必须代理所有跨域请求(在同一域上发布到PHP脚本,重新发布curl查询并返回响应)

要在IE <10中支持CORS,必须修改ajax方法以使用XDomainRequest对象。 这个插件为你做到了: https : //github.com/jaubourg/ajaxHooks

您的脚本看起来正确但我相信您需要更改:

 header('Access-Control-Allow-Origin: *'); 

 header('Access-Control-Allow-Origin: x-requested-with'); 

要么

 header('Access-Control-Allow-Origin: {Origin}'); 

其中{Origin}是Origin标头的值。 我的理解是,如果给出了Origin,那么放’*’将不起作用。

此外,IE8和IE9对此的支持有限,但如果你把jQuery.support.cors = true ,它确实有效。

这适用于IE9。

      

AJAX ActiveX