【发布时间】: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?这将尝试双重解析它,这在大多数情况下都会中断。 -
根据更新更新了示例 - 除了边缘之外,仍然适用。
-
您找到解决方案了吗?我遇到了同样的问题。
标签: javascript ajax internet-explorer cors microsoft-edge