为什么Microsoft Edge打开一些本地网站,而不是其他人,其中域名在hosts文件中路由到127.0.0.1

Eva*_*ruz 66 dns xampp hosts windows-10 microsoft-edge

像很多程序员一样,我在本地测试网站.
我使用hosts文件将域名映射到我的本地ip(127.0.0.1).

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

例如:

d.somewebsite.com 
d.anotherwebsite.com 
and so on...
Run Code Online (Sandbox Code Playgroud)

在Microsoft边缘,大多数网站都可以工作.但是,他们中的一些人没有.没有任何特殊或奇怪的域名将无法正常工作.只是一个简单的d.someletters.com.

它们在Chrome,IE和Firefox中运行良好.

在Edge中,我收到错误消息:"嗯,我们无法访问此页面."

起初我以为它没有解决知识产权问题.但是,我意识到当我在另一个非相关网址上输入拼写错误时,未通过hosts文件路由的请求会被发送到我的ISP进行解析.如果我的ISP无法解决问题,他们会发回这个特殊搜索结果页面,其中包含您可能要查找的内容的建议.好吧,当我去我的本地域名时,我没有从我的ISP获取此页面.我直接从边缘得到上面提到的错误.

所以,在我看来,Edge正在正确地解析域名,否则它将被发送到我的ISP的DNS.

所以,我认为那可能是Edge无法连接到本地机器.但正如我所说,其中一些本地域名正常运作.另外,在Edge中直接使用127.0.0.1也可以.只是这几个域名给我一个问题.只有在Edge(所有其他浏览器都有效)中有任何想法吗?

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

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

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

Chr*_*row 110

  • 您的网络可以阻止环回作为Windows 10中的安全措施.

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

    CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"
    
    Run Code Online (Sandbox Code Playgroud)

这是官方记录在这里(点击链接然后点击页面顶部的'如何调试localhost?'):

https://developer.microsoft.com/en-us/microsoft-edge/platform/faq/#how-can-i-debug-localhost

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

  • 发现/记录的疯狂标识符在哪里? (14认同)
  • 我确定喜欢微软,Windows和IE/Edge.其他所有浏览器都运行得很好,但Edge需要运行一些奇怪的命令行脚本.不能说它并不让我感到惊讶.感谢您分享答案和资源. (6认同)
  • 适合我.我发现它记录在https://developer.microsoft.com/en-us/microsoft-edge/platform/faq/#how-can-i-debug-localhost中 (2认同)

Eva*_*ruz 11

我(以为我)解决了它!

没用的东西:

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

解决方案:完全反直觉扭曲:

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

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

我应该注意到,我使用常识,认为这不仅仅是因为该网站仅存在于导致该问题的"可信站点"区域.我认为这是该区域的一些设置.因此,在我从"网站"列表中删除域名之前,我已将所有设置与我的Internet区域设置完全匹配(中高安全性,启用保护模式,不需要对所有站点进行服务器验证),我也尝试过我能找到的其他组合.没有区域安全设置组合起作用.唯一的解决方案是完全从"可信站点"列表中删除域.有趣的是它无论如何都适用于IE,即使这是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又遇到了这个问题.我尝试了以前的解决方案(以及其他解决方案),它们都不再适用于我.我要离开这个答案,因为我假设我遇到了两个不同的问题.


ttk*_*ttk 10

Edge不支持VPN IP地址,因此任何解决方法都需要使用某种代理.以下是我找到的一些解决方案:

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

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

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

  • 小提琴手总是一个好朋友,但我没想到他会在这种情况下拯救我的屁股...我已经在这几个小时内挣扎了这个终于有效了...谢谢你 (2认同)

lke*_*ler 7

您的"从受信任的网站中删除"解决方案对我不起作用,因为我的本地网站不在我信任的网站上.

但是你让我看了Internet选项,我设法在Windows 10上为我的本地站点工作.这就是我做的:

  1. 打开Internet选项并选择"本地Intranet"

在此输入图像描述

  1. 点击"网站"

在此输入图像描述

  1. 单击"自动检测Intranet网络"

在此输入图像描述

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

  • 也没有为我工作(我在私人网络上运行流浪汉). (3认同)
  • My Edge再次开始展示这个问题,我希望这个解决方案可以解决,但遗憾的是它对我不起作用. (2认同)

bel*_*uga 4

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

我的解决方案是通过向其分配第二个私有空间 IP,将托管相关 Intranet 页面的服务器从域网络中取出,并为该 IP 创建第二个 DNS 条目。服务器最终有 2 个 IP:一个位于域网络上,另一个 IP 和 2 个不同的 DNS 条目。然后,Edge 会指向替代 URL,并开始正常加载 Intranet 页面。似乎只要 PC 的 IP 掩码与相关页面 URL 不匹配,Edge 就会加载该页面。

我提到的博客文章包含有关 localhost 的 Loopback-blocked 和 IE 中缺乏 privateNetworkClientServer 功能的信息。据我所知,所有信息都适用于 Edge。

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