我有一个非常简单的ajax请求(见下文)。服务器正在使用CORS,在IE 10 +,Chrome,Firefox和Opera 中正常工作。但是,在 Microsoft Edge 上,它失败并带有
XMLHttpRequest:网络错误0x80070005,访问被拒绝。
我已对帖子here,here,here和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自托管创建的localhost网站。这是不寻常的,但软件(只能在本地使用)需要从云服务获取数据。如上所述,它适用于所有其他浏览器,Edge是唯一的问题。
答案 0 :(得分:10)
使用Microsoft Edge的开发人员不应再存在此问题。如果您遇到localhost测试问题,请导航到 about:flags ,并确保选中 Allow localhost loopback 。
Microsoft Edge不支持当前支持(开箱即用)localhost测试。但是,您可以按照此处提供的指导启用它:http://dev.modern.ie/platform/faq/how-can-i-debug-localhost/。
我们正在努力在将来的版本中解决此问题。
答案 1 :(得分:0)
对于Build 10158,命令稍有改动,Spartan完全重新命名为Microsoft Edge,因此要在Microsoft Edge中启用它,请从管理员命令提示符运行以下命令:
CheckNetIsolation.exe LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe
答案 2 :(得分:0)
在你的ajax调用之前使用:$ .support.cors = true;