为什么在Microsoft Edge中CORS请求失败但在其他浏览器中工作?

时间:2016-02-03 11:41:02

标签: cors fiddler microsoft-edge

我正在使用jQuery发送交叉源ajax请求,并且它们在IE11,Chrome和Firefox中运行良好但是它们在Edge中失败并出现以下错误:

  

SCRIPT7002:XMLHttpRequest:网络错误0x80070005,访问权限是   拒绝。

有趣的是,我使用Fiddler试图弄清楚发生了什么,当Fiddler正在运行并捕获请求时,一切正常。一旦我关闭Fiddler或暂停捕获它就会再次失败。

该站点在我的本地计算机(webpack-dev-server)上运行,通过本地网络向WebAPI服务发出请求。

我的主机文件设置如下:

127.0.0.1   local.myapp.test
192.168.0.111   api.myapp.test

它不应该是生产中的问题,因为站点和API将托管在同一个地方,但它对于开发和测试非常宝贵。

更新

感谢Eric Law,我现在知道为什么它在Fiddler启用时表现不同 - 由于Fiddler所做的代理设置更改以及Intranet区域的安全级别较低,Edge正在切换到本地Intranet区域。

Fiddler forum answer

我要将本地Intranet区域安全级别提升到中高,以匹配Internet区域,然后使用Fiddler尝试解决为什么Edge对CORS请求感到不安。

4 个答案:

答案 0 :(得分:2)

我将在下面逐字地列出Eric Lawrence(Fiddler的创造者)在Fiddler论坛上提供的答案:

  

一种可能性是您的计算机配置了Intranet区域,并且Intranet区域依赖于代理配置脚本:http://blogs.msdn.com/b/ieinternals/archive/2012/06/05/the-local-intranet-security-zone.aspx。当Fiddler运行时,代理设置指向Fiddler本身。

     

...如果您正在使用Intranet网站作为来自Internet区域中的网站的XHR目标,那么还有另一个因素在起作用。

     

Edge以增强保护模式(AppContainer)运行。它具有阻止从Internet区域进程访问专用网络资源的功能。请参阅"专用网络资源" http://blogs.msdn.com/b/ieinternals/archive/2012/03/23/understanding-ie10-enhanced-protected-mode-network-security-addons-cookies-metro-desktop.aspx部分了解更多详情。

我将local.myapp.test(运行我的SPA的URL)添加到Internet选项中的本地Intranet区域,现在Edge很高兴,而不需要Fiddler。

答案 1 :(得分:2)

我遇到了这个问题,在尝试了几个选项后,对我有用的是从所有Zone站点条目中删除我正在使用的域。以local.myapp.test为例,我检查了所有“anysubdomain”.myapp.test,条目并将其从所有区域中删除,包括所有子域名或外卡条目。

在“Internet选项”(IE 11)中,选择安全标签,然后在“本地Intranet ”中点击“网站”,然后选择“高级“并删除了相关的域名引用。

在“受信任的网站”中点击“网站”,然后从列表中删除相关条目

答案 2 :(得分:1)

在about中:Edge内部的标志确保"允许localhost环回(这可能会使您的设备处于危险之中)"检查。

答案 3 :(得分:1)

我最近遇到了这个“问题”,解决方案是转到 edge://flags/(只需在搜索栏中输入)。之后,搜索 CORS,很快您就会看到 Block insecure private network requests 标志。您只需选择 disable 即可。