【问题标题】:IE 10 & 11 CORS Status 0IE 10 和 11 CORS 状态 0
【发布时间】:2014-06-07 10:13:15
【问题描述】:

我有一个 IE 错误,我似乎无法弄清楚。我只支持 IE 10 和 11,所以我认为我可以摆脱以下代码。

我有一个 AJAX 请求:

$.ajax({
    type: {method},
    url: {url},
    cache: false,
    crossDomain: true,
    data: {data to send},
    success: function (data, textStatus, xhr) {
       ///success code
    },
   error: function (xhr, textStatus, errorThrown) {
       //error code
   }
});

此代码在 Firefox 和 Chrome 中运行良好。它在 IE 10,11 中不起作用。我的印象是 CORS 在 IE 10,11 中是固定的,不是吗?

为什么在 IE 10,11 中会出现跟随错误?

{"readyState":0,"status":0,"statusText":"Error: Access is denied.\r\n"}

【问题讨论】:

  • 不相关,但如果您发出跨域请求,则不需要crossDomain: true。 (很奇怪吧?)如果您想知道原因,请参阅 crossDomain 选项的文档。
  • 您确定您实际上是在 IE10 或 11 标准模式下运行吗?通常,在开发环境中进行测试时,IE 会默认为兼容模式,这会使您回到 IE8 或 IE7。
  • 我遇到了同样的错误,并且 CORS 设置已在服务器上完成,但请求从未出现在 IE 的“网络”选项卡中。始终 xhr.status=0。有什么想法吗?
  • 谢谢大家。虽然没有运气。所以对我来说,服务器设置正确,一切都在 chrome 和 firefox 中运行。此外,如果我将用户代理字符串更改为“Google Chrome”,它可以在 IE 中使用。如果我将它设置为 IE 10 或 11,我会收到我之前提到的错误。另外我确定我没有使用兼容模式。我刚才仔细检查了。
  • 您需要显示客户端和服务器之间的 HTTP 流量记录,以便在此方面获得任何进一步的帮助。问题出在您的客户端代码或服务器代码中。

标签: javascript ajax cors


【解决方案1】:

所以我需要启用“跨域访问数据源”。

步骤:

  1. 选择 Internet 选项
  2. 选择安全选项卡
  3. 选择自定义级别...
  4. 向下滚动到其他
  5. 跨域查找 Access 数据源
  6. 将值更改为启用

【讨论】:

  • 您将不得不要求所有客户也这样做,这听起来不合理。
  • 我知道但有什么替代方案?
  • 您需要为初学者显示客户端和服务器之间的 HTTP 流量记录。
  • 就是这样。如果未启用上述设置,则没有流量。在发送任何内容之前它都会失败。正如我之前提到的,jquery xhr.open( s.type, s.url, s.async ); 会立即抛出错误并拒绝访问。
  • IE 中的整个安全区域业务是它一直并将继续成为如此糟糕的浏览器的众多原因之一。这一切都非常令人困惑和不必要。另外,IE 在其他方面也违反了同源策略 RFC(它不考虑端口)并且之前已经破坏了 CORS 支持(查看 XDomainRequest 以获取证据)。看起来您的问题是试图从不太安全的区域向更安全的区域发出 XHR 请求。
猜你喜欢
  • 1970-01-01
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多