22

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

XMLHttpRequest:网络错误 0x80070005,访问被拒绝。

我已经研究了这里这里这里这里的帖子,但找不到有效的答案。那些人在使用 IE 时遇到了问题,但是添加 contentType(此获取不需要)和 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 自托管创建的 localhost 网站。这是不寻常的,但软件(只能在本地使用)从云服务获取数据是必需的。如前所述,它适用于所有其他浏览器,Edge 是唯一的问题。

4

3 回答 3

10

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


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

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

于 2015-06-18T08:38:04.133 回答
0

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

CheckNetIsolation.exe LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe
于 2015-06-30T10:05:58.257 回答
0

就在你的 ajax 调用之前使用这个: $.support.cors = true;

于 2015-08-21T12:32:50.717 回答