XMLHttpRequest:网络错误 0x80070005,Microsoft Edge(但不是 IE)拒绝访问

XMLHttpRequest: Network Error 0x80070005, Access is denied on Microsoft Edge (but not IE)

我有一个非常简单的 ajax 请求(见下文)。服务器正在使用 CORS,并且 在 IE 10+、Chrome、Firefox 和 Opera 中工作正常。然而,在 Microsoft Edge 上,它失败并显示

XMLHttpRequest: Network Error 0x80070005, Access is denied.

我研究了帖子 here, here, here and here,但找不到有效的答案。这些人在使用 IE 时遇到过问题,但添加 contentType(此 get 不需要)和 crossDomain 使其工作正常。

CanIUse 似乎表明 CORS 在 Edge 中可用。该请求在 IE9 下也失败,但 CanIUse 声明仅部分支持 CORS,所以这是可以理解的。

有什么办法可以解决这个问题吗?

代码:

$.ajax({
      crossDomain: true,
      url: "http://localhost:2023/api/DoAction/test",
      success: function (a) {
        var res = JSON.parse(a);
        alert(res.content);
      },
      error: function (a, e, r) {
        alert(a.responseText);
      }
    });

更新

添加更多信息以防它提供任何线索 - ajax 请求来自 Azure 并发布到使用 OWIN 自托管创建的本地主机网站。这是不寻常的,但软件(只能在本地使用)从云服务获取数据是必需的。如前所述,它适用于所有其他浏览器,Edge 是唯一的问题。

对于使用 Microsoft Edge 的开发人员来说,这个问题应该不再存在。如果您在本地主机测试中遇到问题,请导航至 about:flags,并确保选中 Allow localhost loopback


Microsoft Edge 当前 不支持(开箱即用)本地主机测试。但是,您可以按照此处提供的指导启用它:http://dev.modern.ie/platform/faq/how-can-i-debug-localhost/.

我们正在努力在未来的版本中解决这个问题。

对于 Build 10158,命令略有变化,将 Spartan 完全更名为 Microsoft Edge,因此要在 Microsoft Edge 运行 中启用它,请在管理员命令提示符下执行以下命令:

CheckNetIsolation.exe LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe

就在您的 ajax 调用之前使用此:$.support.cors = true;