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

Posted

技术标签:

【中文标题】XMLHttpRequest:网络错误 0x80070005,在 Microsoft Edge(但不是 IE)上拒绝访问【英文标题】:XMLHttpRequest: Network Error 0x80070005, Access is denied on Microsoft Edge (but not IE) 【发布时间】:2015-09-03 00:08:14 【问题描述】:

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

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

我研究了here、here、here 和here 的帖子,但找不到有效的答案。那些人在使用 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 是唯一的问题。

【问题讨论】:

请求来自的页面的 URL 方案是什么? 为什么要在 GET 请求中设置 content-type 标头?没有描述内容的请求正文。 你为什么要使用dataType: "json" 将响应显式解析为 JSON?这将尝试双重解析它,这在大多数情况下都会中断。 根据更新更新了示例 - 除了边缘之外,仍然适用。 您找到解决方案了吗?我遇到了同样的问题。 【参考方案1】:

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


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

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

【讨论】:

一直工作到包含 Build 10162,在 Build 10166 中中断。从本地主机向启用 CORS 的远程主机发出的 AJAX 请求失败,并显示“网络错误 0x80070005” 我会进一步调查! 在 Build 10240 中再次工作 :) 我安装了 SSL 证书(真实的,不是自签名的),并在 hosts 文件中添加了一个条目以将域指向 localhost。如果页面上的第一个 AJAX 调用是 POST,则会在 Microsoft Edge(生产版本)中产生网络错误。如果第一个调用是 GET,则一切正常,包括后续的 POST。如果您清除浏览器缓存或重新启动 IIS,则会再次出现此问题。 Edge 似乎不仅在本地主机上而且在 iframe 上也存在 CORS 问题 :( 使用 Edge 浏览器查看此链接:reportingapidotnetsample.realeyes.me/Charting【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

【讨论】:

这会覆盖 jQuery 对浏览器对 CORS 支持的检测。这要么没有效果,要么会破坏事情。不要那样做。

以上是关于XMLHttpRequest:网络错误 0x80070005,在 Microsoft Edge(但不是 IE)上拒绝访问的主要内容,如果未能解决你的问题,请参考以下文章

XMLHttpRequest 异常 101:同步请求中出现网络错误

Microsoft Edge:XMLHttpRequest:网络错误 0x2efd,由于错误 00002efd 无法完成操作

SCRIPT7002:XMLHttpRequest:网络错误 0x80070005,成功预检请求后拒绝访问

XMLHttpRequest: 网络错误 0x2ef3

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

IE10/11 Ajax XHR 错误 - SCRIPT7002:XMLHttpRequest:网络错误 0x2ef3