更新:我强烈建议不要在XDomainRequest中投入任何时间,因为它是一个非常糟糕的实现,有很多限制.它基本上只适用于对非ssl服务器的GET请求,所以你不妨使用jsonp或其他什么.
我使用CORS来调用跨域API,但Internet Explorer提出了问题.通过XDomainRequest
对象在IE8和IE9中应该可以使用CORS ,但是我无法使用它.
JQuery 拒绝为XDomainRequest提供本机支持,但是建议使用几个jQuery插件来添加此支持.本主题提出了两个这样的插件:jQuery.XDomainRequest.js和xdr.js,已经报告可以使用.Afaik,插件应该自动覆盖行为jQuery.ajax
.我在这里找到了另一个插件.
我把一些演示页面与相应的插件jQuery.XDomainRequest以及xdr和jquery.ie.cors放在一起,它们对启用CORS的服务器执行ajax请求.这些页面在Chrome和Firefox中运行,但IE8/9会立即抛出权限被拒绝错误(甚至在发出请求之前).这个MSDN帖子建议添加另一个处理程序,xhr.onprogress = function() {};
但我尝试了这个,它也没有工作.
什么线索我做错了什么?我现在也使用MS8虚拟服务器测试IE8,但它有完全相同的问题.
编辑:好的所以我发现问题的一部分是我通过HTTPS使用POST.显然XDomainRequest不允许通过HTTPS使用CORS.我可以切换到HTTP,但我真的需要POST.
编辑2:在本故事结束时,请在github上查看此问题.事实证明,当使用HTTP POST时,xDomainRequest只能将请求体(参数)编码为text/plain
.这几乎使它变得毫无价值,因为每个人都使用application/x-www-form-urlencoded
或multipart/form-data
.
我想从跨域url获取html响应页面.
为此,我使用ajax请求,因为,
$.ajax({
type: 'GET',
url: "http://wcidevapps.com/salescentral/idisk/0001000383/iDisk",
dataType: "jsonp",
success: function (response) {
$(response).find('li a').each(function () {
listHref.push($(this).attr('href'));
});
}
});
Run Code Online (Sandbox Code Playgroud)
但在请求后它没有回复任何结果.