繁体   English   中英

jQuery .ajax在IE8 / 9中对跨域请求的访问被拒绝

[英]jQuery .ajax getting Access Denied on Cross Domain Request in IE8/9

我正在使用jQuery的.ajax将其他页面的内容拉入模式窗口。 这些页面中的大多数都位于同一域中,并且可以在所有浏览器中正常工作。

有一个链接转到另一个域。 该链接可在Chrome,Firefox和Safari中正常工作,但在Internet Explorer 8和9中显示“拒绝访问”错误。

我搜索了很多解决方案,并尝试了一些到目前为止没有帮助的事情:

  • 我确认Access-Control-Allow-Origin已设置为允许我的域。 我也尝试将其设置为“ *”只是为了确认这不是问题。
  • 我尝试使用不同的jQuery方法进行AJAX调用。 我使用了jQuery的load,get和ajax方法。 jQuery的ajax方法给了我“拒绝访问”错误。
  • 我尝试使用Internet Explorer的XDomainRequests。 XDomainRequests告诉我有一个错误,但没有提供更多信息。 我尝试对此代码进行了几次更改,发现了一些建议,例如在send函数上设置超时但没有更改。
  • 我设置jQuery.support.cors = true; 并为我的.ajax调用添加了crossDomain:true。
  • 我发现有人建议jQuery 1.8.0版引起了这个问题,而这个问题恰好是我正在使用的网站上使用的版本。 他们的建议是退回到1.7.2版本,该版本没有解决问题。 我也尝试过更改为版本1.11.0,但这也没有任何改变。
  • 我看到一个建议,添加&callback =? 到url的末尾就可以解决它,但这没什么不同。

我可能会忘记我今天尝试过的东西,但这应该是大部分。

这是我目前的代码:

jQuery.support.cors = true;

      var request = $.ajax(
      {
        crossDomain: true,
        type: "GET",
        url: url,
        success: function () {
          console.log('success');
        },
        error: function (a, status, error) {
          console.log('error: ' + error);
        },
        complete: function () {
          console.log('complete');
        }
      });

Chrome,Firefox和Safari在控制台中记录“成功”和“完成”。 IE8 / 9日志“错误:错误:访问被拒绝。” 并在控制台中“完成”。

前几天,我遇到了类似的问题。 这就是我尝试过的,它就像一个魅力

我已将属性dataType设置为jsonp(即dataType:'jsonp'),这将适用于GET但不适用于POST

如果以上方法仍然无效,则可以从MoonScript中引用以下脚本,它会自动连接支持

https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest

我用它来使Internet Explorer在跨域Ajax调用上为我工作。 我也很乐于在这里列出我的解决方案,但是我认为下面的链接可能比比我更聪明的用户足够详细地解释了。

jQuery $ .ajax在跨域调用的IE中失败

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM