我正在尝试移植Chrome扩展到Edge。Chrome扩展工作得很好,所有HTTP请求都按预期工作。当这些相同的请求在端口中触发时,我得到这个错误:
XMLHttpRequest: Network Error 0x2efd, Could not complete operation due to Error 00002efd.
这个问题似乎出现在很多微软产品上,包括Windows Phone。也许有一个类似的答案,我的问题为这个扩展,但我允许所有的url在我的清单…
这是请求:
$http.get(url)
.then(function () {
})
.catch(function () {
var args = arguments;
});
我也尝试过jQuery的方式:
$.ajax({
url: url,
success: function () {
},
error: function () {
var args = arguments;
}
});
我不能分享确切的URL,因为它是我们的业务架构的一部分,但Chrome扩展消费它只是很好。如果我直接在浏览器(Edge或Chrome)中打开URL,它会显示结果很好……我很茫然。我知道这个错误意味着请求不能连接,但是为什么呢?我该如何修复它?
似乎是一个已知的bug,截至2016-10-07尚未完全分类。
在另一个bug报告中,微软神秘地说"这是由于扩展不支持环回而设计的",并关闭了它。这肯定会与Chrome模型不兼容。
该症状似乎是Windows网络堆栈认为是本地内部网一部分的站点的连接被拒绝作为侵略性XSS预防策略的一部分。
在ms解决这个问题之前,您在扩展端肯定无能为力。如果有的话,扩展代码需要有足够的特权来做这件事,即使这会破坏它们的划分模型。
你可以对环境做一些改变。我会尝试"本地intranet"区域的Internet选项,例如设置保护模式,禁用Internet区域,或者更有可能以某种方式确保站点不被视为内部网。域名而不是IP地址也可以帮助"欺骗"Edge,使其不是内部网。