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