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

标签 javascript jquery ajax internet-explorer-8 internet-explorer-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 告诉我有一个错误,但没有给我更多信息。我尝试对此代码进行多次更改,我发现了一些建议,例如在发送函数上设置超时,但没有任何更改。
  • 我设置了 jQuery.support.cors = true;并将 crossDomain: true 添加到我的 .ajax 调用中。
  • 我发现有人建议 jQuery 版本 1.8.0 导致了这个问题,而我正在开发的网站上使用的版本恰好是这个版本。他们的建议是退回到 1.7.2 版本,该版本并未解决问题。我也尝试更改为版本 1.11.0,但这也没有什么区别。
  • 我看到一个建议,添加 &callback=?到网址末尾可以解决这个问题,但这没有什么区别。

我可能忘记了今天尝试过的一些事情,但这应该是大部分。

这是我目前的代码:

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

关于javascript - jQuery .ajax 在 IE8/9 中跨域请求被拒绝访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22519736/

相关文章:

javascript - Bootstrap 3 轮播字幕延迟

javascript - HTML 元素 ID 的合法字符是什么?

javascript - HighCharts.js TickInterval动态变化

php - 使用 jquery 的 .error() 进行多次 PHP 数据库更新

javascript - 导航菜单错误 "Uncaught TypeError: Cannot read property ' 未定义的顶部”

javascript - 如何避免在 Node.js 中长时间嵌套异步函数

javascript - slider 革命 + BarbaJS (PJAX)

javascript - 如何避免在单击子元素时在父元素上触发事件?

java - Spring MVC 使用 ajax 检查用户名可用性

javascript - jquery when/then 用于递归 ajax 调用