Microsoft Edge为什么打开某些本地网站,而不打开其他本地网站,在这些网站中主机名中的域名路由到127.0.0.1


75

像许多程序员一样,我在本地测试站点。
我使用hosts文件将域名映射到我的本地IP(127.0.0.1)。

我使用合格的域名,通常带有“ d”子域(用于“开发”)。

例如:

d.somewebsite.com 
d.anotherwebsite.com 
and so on...

在Microsoft Edge中,大多数网站都可以使用。但是,其中有两个不是。域名无效没有什么特别或奇怪的地方。只是一个简单的d.someletters.com

它们在Chrome,IE和Firefox中可以正常工作。

在Edge中,我收到错误消息:“嗯,我们无法到达此页面。”

起初,我认为这不是解决IP问题。但是,我意识到当我在另一个不相关的URL上输入错误时,主机文件未路由的请求将发送到我的ISP进行解析。如果我的ISP无法解决它,他们会发回这个特殊的搜索结果页面,其中包含有关您可能要查找的内容的建议。好吧,当我转到本地域时,不会从ISP获得此页面。我直接从边缘得到上述错误。

因此,在我看来,Edge可以正确解析该域,否则它将被发送到我的ISP的DNS。

因此,我认为那时Edge可能无法连接到本地计算机。但是就像我说的那样,其中一些本地域运行良好。同样,直接在Edge中使用127.0.0.1也可以。正是这几个域名给我带来了麻烦。而且只有在Edge中(所有其他浏览器都可以使用)有什么想法吗?

如果重要的话,Web服务器是Windows的Apache2(xampp)。

另外,如果我在Edge中打开调试窗口并监视网络,则根本看不到任何请求。

编辑:我不再使用主机文件。我在一个Linux机器上运行dnsmasq,并且将其用于DNS而不是主机。也不再使用环回(显然,因为DNS现在在另一个盒子上了),我使用的是内部专用ip地址(192.168 ...)。同样的问题。


可以肯定的是,它与类似于IE的“兼容性”视图设置有关。我可以在IE上来回切换。不确定该选项在哪里。
Dipen Shah 2015年

我认为您使用的是:microsoft.com/en-us/download/…,我现在正尝试查看这些域是否由于某些原因而在列表中...
Evan de la Cruz

感谢您的帮助,但我认为不是这样。我的IE或“企业模式”兼容性列表中没有任何网站(很重要的是Edge的兼容性系统)
Evan de la Cruz

抱歉,真的不确定。
Dipen Shah 2015年

2
我自己遇到这个问题。此处描述的修复均无效,但我打开了Fiddler(HTTP调试器),然后工作正常。因此,一种解决方法是安装Fiddler,并在Edge中进行测试时始终将其打开。但是我不确定Fiddler如何使Edge正常工作-如果Edge通常无法发送请求,那么为什么要添加代理使其发送请求呢?
戴夫·肯纳德

Answers:


122
  • 您的网络可以将环回作为Windows 10中的一项安全措施。

  • 以管理员身份打开命令提示符,然后运行此命令以使Edge免于环回:

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

Microsoft.MicrosoftEdge_8wekyb3d8bbwe是Edge应用程序的标识符)

这里有一篇博客文章提供了更多详细信息:https : //blogs.msdn.microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-microsoft-edge/


14
在哪里找到/记录了那个疯狂的标识符?
mlhDev

1
这对我不起作用,但是让小提琴手跑步确实可以,这很奇怪。
丹尼尔·杰克逊


8
我肯定喜欢Microsoft,Windows和IE / Edge。其他所有浏览器都可以正常工作,但是Edge需要运行一些奇怪的命令行脚本。不能说这并不令我惊讶。感谢您分享答案和资源。
用户

1
@Chris Halcrow好吧,我看到我确实在下面的另一篇文章中提到了此修复程序。基本上,我说的是,此修复程序似乎可以工作一段时间,但随后恢复了行为。
伊万德拉克鲁兹

12

我(认为我)解决了!

无效的事情:

  • 更改IE兼容性设置或Windows兼容性列表
  • 使用标准域名
  • 使用非环回的IP地址
  • 使用http vs https
  • 从网页上删除所有JavaScript和跨站点脚本/资源
  • 选中/取消选中about:flags中的选项以允许localhost环回或使用兼容性设置
  • 删除/添加/编辑Windows注册表的TabProcConfig中的条目
  • 删除浏览历史记录,缓存,cookie

解决方案:完全违反直觉:

从您信任的站点列表中删除域名!

  1. 打开“ Internet选项”对话框(只需询问Cortana或使用Windowskey + s)
  2. 转到安全选项卡
  3. 单击“受信任的站点”区域
  4. 点击网站按钮
  5. 从受信任的站点列表中删除有问题的域名
  6. 单击“应用”,然后关闭对话框
  7. 打开Edge(如果已经运行,请重新启动)
  8. 中提琴

我应该指出,我常识性地认为,导致该问题的不仅是该站点仅位于“受信任的站点”区域中。我认为这是该区域的某些设置。因此,在我从“站点”列表中删除域名之前,我已使所有设置与Internet区域设置完全匹配(中高安全性,启用保护模式,不需要对所有站点进行服务器验证),并且我也尝试了我可以找到的所有其他组合。没有有效的区域安全设置组合。唯一的解决方案是简单地从“受信任的站点”列表中完全删除域。有趣的是,即使这是IE的Internet设置对话框,它也可以在IE中运行。这似乎只影响Edge。

Windows 10 Internet选项

从受信任的区域中删除受信任的站点

编辑:两周后,我将配置更改为,而不是hosts文件,而是在本地Linux计算机上使用dnsmasq并将其用于DNS。我不确定它是否立即发生,但在某个时候Edge再次停止工作!我已经在about:flags中选中了“ allow loopback”复选框,所以我没想到CheckNetIsolation修复程序会起作用。但是,确实如此。边缘版本为20.10240.16384.0。我使用Windows 10预览版中的无法在Microsoft Edge(Project Spartan)中打开localhost中的修复程序

编辑#2几个月后,Edge又出现了这个问题。我尝试了以前的解决方案(和其他解决方案),但它们都不适合我。我离开这个答案是因为我假设我遇到了两个单独的问题。


我很好奇,如果启用(增强)保护模式(请参阅上一个屏幕截图),IE的行为是否与Edge一样?我们在两个浏览器中都遇到了相同的问题(和解决方案),而在IE中,它是由EPM触发的。
nemec

我尝试了带和不带保护模式的边缘,没有任何区别。我将尽快尝试IE并进行报告。
伊万·德拉克鲁斯

有趣。就我而言(第一个答案中所述),通过Internet选项将Intranet域添加到“受信任的站点”列表中并没有帮助。我认为这些设置不适用于Edge浏览器。但是从您的答案中可以明显看出有时它们确实如此。
beluga

@nemec,无论我使用哪种设置,网站都将在IE中加载。我应该注意的是,这是在我按照stackoverflow.com/questions/30334289/…中所述运行CheckNetIsolation之后,当我更改配置并再次中断Edge时。
伊万·德拉克鲁兹

1
就像您链接一样,CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"提升的命令提示符下的解决方案也可以对其进行修复。
凯文·加迪亚尼

11

Edge不支持VPN IP地址,因此任何解决方法都需要采用某种代理。这是我发现可行的一些解决方案:

  1. 安装并运行fiddler。Fiddler基本上会拦截来自浏览器的请求,然后将其转发到目的地。这是最简单的解决方法。

  2. 通过内置的Windows工具配置代理:netsh。基本步骤包括将您的开发域分配给该127.0.0.0/8范围内的可用本地私有IP地址,然后将此IP映射到VPN上Web服务器的IP。请参阅此处的分步说明

  3. 使用ssh的端口转发功能来配置代理。假设localhost上有80端口,则将其添加127.0.0.1 d.somewebsite.com到您的主机文件中,然后运行以下ssh命令:ssh -L localhost:80:localhost:80 user@devwebserver,其中devwebserver开发Web服务器的主机名(在VM或vagrant实例中,或在VPN中)。该选项假定您具有对开发服务器的ssh访问权限。


1
我没有使用VPN。什么是“ VPN IP地址”?
伊万德拉克鲁兹

2
提琴手一直是一个好朋友,但我没想到他会在这种情况下救我的屁股...我一直在努力奋斗了数小时,终于奏效了...谢谢
makak

给定的解决方案都不适合我,但是Fiddler做到了!只需安装它并修复Microsoft问题!
undefinedman

WTF?我一直在努力寻找答案,以了解为何Edge无法与活动目录域上的Web服务器一起使用,并且唯一可行的解​​决方案是运行Fiddler。我还是不知道怎么回事?
Ryan Mortier

7

您的“从受信任的站点删除”解决方案对我不起作用,因为我的本地站点不在我的受信任站点上。

但是您让我寻找了Internet选项,并且设法使IIS在Windows 10上为我的本地站点工作。这是我所做的:

  1. 打开“ Internet选项”,然后选择“本地Intranet”

在此处输入图片说明

  1. 点击“站点”

在此处输入图片说明

  1. 单击“自动检测Intranet网络”

在此处输入图片说明

  1. 单击确定。在Microsoft Edge中尝试本地计算机站点,它现在应该可以正常工作。

2
My Edge开始再次展示此问题,我希望此解决方案能够解决,但不幸的是,它对我不起作用。
伊万·德拉克鲁斯

3
也没有为我工作(我正在私人网络上流浪汉)。
dtbarne

1
我在Windows 10上禁用了“站点”选项。因此,我无法修复它。
LeonanCarvalho

4

可能不适用于您的情况,但仍然如此。我的设置如下。公用空间地址(互联网)页面正尝试在iframe中加载带有私有空间地址(内部网)的页面,而Edge拒绝使用相同的“ Hmm,我们无法访问此页面”消息加载内部网页,并在调试控制台中显示“ SEC7117错误”。事实证明Edge不喜欢混合Internet / Intranet区域(有关原因,请参阅了解增强保护模式博客文章)。Edge在单独的AppContainer中运行选项卡,并且AppContainer的网络限制对您的网络配置敏感。

我的解决方案是通过为其分配第二个私有空间IP,将托管有问题的Intranet页面的服务器移出域网络,并为该IP创建第二个DNS条目。该服务器最终具有2个IP:一个在域网络上,另一个则是一个和2个不同的DNS条目。然后将Edge指向备用URL,它开始正确加载Intranet页面。好像只要PC的IP掩码和相关页面URL不匹配,Edge就会加载页面。

我提到的博客文章中有关于本地主机的Loopback-blocked信息,以及IE中缺乏privateNetworkClientServer功能。据我所知,所有信息都适用于Edge。


2
绝对不适用于我的情况。我的Intranet页面是从本地计算机提供的(换句话说,客户端和服务器是同一台计算机)。没有iframe。没有区域混合。我有一个包含以下公共html文档的本地页面:<html><body>hello</body></html> 我的计算机的名称不包含域名(其不合格)。另外,我可以使用主机文件访问几个本地站点。只是没有这个。因此,d.test1.com和d.test2.com都可以工作,但t.test3.com不能工作。在其他浏览器中也可以正常工作。
伊万德拉克鲁兹

博客文章的链接已断开。似乎已指向此职位
Addison Schuhardt '18年

3

当发生这种情况时,我可以在下面的注册表项中找到与该域匹配的域条目。当我删除它时,它会工作一段时间,我不知道为什么,但是Edge最终会重新添加它。

计算机\ HKEY_USERS \ S-1-5-21-964789662-521690395-1734141374-1111 \ Software \ Classes \ Local Settings \ Software \ Microsoft \ Windows \ CurrentVersion \ AppContainer \ Storage \ microsoft.microsoftedge_8wekyb3d8bbwe \ MicrosoftEdge \ TabProcConfig


这也是我的问题。任何人有什么想法吗?
Neromancer

不知道为什么,但是我使用powershell删除并重新安装Edge,而我不再遇到此问题。关于此操作的快速Bingle找到了以下站点:cnet.com/how-to/how-to-reinstall-default-apps-in-windows-10。您可以尝试...
Brian

1
TabProcConfig在该路径下找不到(对于当前用户,指定的用户不存在)。
Qtax

从TabProcConfig删除我的网站对我来说很有效。但我也必须将其从“受信任的站点”中删除(我之前在其中添加了它,因为另一个提示是这样)
user2543253

3

从您的编辑中注意到,您现在正在访问的是192.168.0.0/16地址而不是127.0.0.1的站点,我想您正在遇到一个问题,即Edge浏览器的行为方式不同,具体取决于用于访问的界面网站。我尝试过的其他浏览器却没有这种行为。

在我的环境中,我有一个Virtualbox仅主机网络设置,其NdisDeviceType为1。将NdisDeviceType更改为0后,Edge仅允许我通过此接口导航到站点。所需的注册表项是:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\XXXX

而不是XXXX,您需要接口的正确密钥,该密钥是我从“路由打印”中确定并减去1的。对于我来说,它是“ 0016”。

要更改的值称为*NdisDeviceType。(这是一个字面上的星号。)我将其从0更改为1,并且不得不重新启动Windows以注意到更改。

我的答案来自2017年10月3日“ Jani L”帖子。我还将此解决方案更详细地发布到另一个stackoverflow问题。另请参阅Virtualbox票证15565


我不再遇到问题,所以我无法确认修复。但这听起来很有希望。
埃文·德拉克鲁兹

在查看我的编辑内容时,似乎回送和本地IP地址都存在问题。这个答案仍然适用吗?
埃文·德拉克鲁兹

2

没有其他解决方案对我有用。原来,我的问题与VPN有关。Microsoft Edge仍然不支持VPN IP地址,而Internet Explorer 11却支持。截至2016年5月,这仍然是一个问题,令人印象深刻。

其他详细信息:https : //social.technet.microsoft.com/Forums/zh-CN/b3a687ae-345d-4c3f-9070-184b33fb1fc6/microsoft-edge-cant-access-vpn-ip-address-but-ie-11 -can?forum = win10itprogeneral

当前,Microsoft Edge似乎无法与VPN很好地配合使用。从Microsoft Edge连接到Internet的机制与Internet Explorer 11和其他桌面浏览器略有不同,由于我对此不太了解,因此我无法清楚地解释。

因此,根据当前情况,请改用Internet Explorer 11。


2

以我为例,将网络类型从专用更改为公用即可。这也是可重现的,更改可靠的网络类型会将状态从“工作”更改为:Http failure response for (unknown url): 0 Unknown Error


您能否提供在Windows 10家庭版(有线以太网)上更改网络类型的步骤?我似乎找不到我期望的单选按钮。我能找到的最接近的是私有公共具有不同选择的网络共享选项,这在我看来似乎并不正确。
伊万·德拉克鲁斯

1.单击系统任务栏中的WiFi图标;2.单击网络上的属性;3.将网络配置文件从专用更改为公用。tinkertry.com/...
马克梁静茹

0

对我来说,我先进入“ Internet选项”(控制面板),然后进入“安全性”,然后选择本地Intranet,然后在“自动检测Intranet网络”中打勾。这使下面的嵌套选项变成灰色,并且Edge立即开始使用我的hosts文件。


2
我尝试了这个,但不幸的是我没有成功。
丹尼尔·杰克逊

@DanielJackson由于安全限制,我无法在工作机上执行此操作……
Radmation
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.