我使用这个页面- http://ecmazing.com/cors.html -向这个资源发出跨域Ajax请求:http://hacheck.tel.fer.hr/xml.pl
支持Chrome, Safari和Firefox,但不支持IE9和Opera。
代码:var pdata = {'textarea': 'test'};
$.post('http://hacheck.tel.fer.hr/xml.pl', pdata, function(data, status, xhr) {
output.value = xhr.responseText;
});
(期望的结果是一个XML代码字符串)
自己看: http://ecmazing.com/cors.html
在IE9和Opera中,XHR对象的error
处理程序执行,这个错误对象被传入:
{
readyState: 4,
status: 0,
statusText: 'error'
}
如您所见,这个错误对象并没有透露太多信息。
如何使它在IE9和Opera中工作?
参见whencanuse的条目
对于Internet Explorer, CORS是"在IE8和IE9中使用XDomainRequest对象部分支持",所以你需要使用一个替代对象来使用它。
Opera根本不支持。
如果在Opera中需要跨域Ajax,则使用JSON-P。
尝试在IE和jQuery中使用CORS时我感到很沮丧,我写了一个库来平滑最糟糕的部分。
是的,微软的资金和人力短缺使他们在短短七年内无法使他们的浏览器完全兼容CORS,但我仍然更喜欢CORS而不是JSONP,坦率地说,JSONP是一个hack。
这是一个适用于IE的解决方案。