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

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

我使用限定域名,通常带有一个“ d”子域名(表示“开发”)。

例如:

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

在微软的优势,大多数网站的工作。然而,他们中的一些人却没有。没有什么特别或怪异的域名不会工作。只是一个简单的 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 中打开调试窗口并监视网络,我根本看不到任何请求发出。

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

74136 次浏览

可能不适用于你的情况,但无论如何。我的设置如下。一个公共空间地址(因特网)页面试图加载一个在 iframe 中有私有空间地址(内部网)的页面,而 Edge 会拒绝加载带有相同“唔,我们无法到达这个页面”消息的内部网页面,并且在调试控制台中带有“ SEC7117错误”。事实证明 Edge 不喜欢混合互联网/内部网区域(原因见 了解增强型保护模式博客文章)。Edge 在单独的 AppContainer 中运行选项卡,并且 AppContainer 网络限制对您的网络配置是敏感的。

我的解决方案是将托管有问题的内部网页的服务器从域网中取出,为其分配第二个专用空间 IP,并为该 IP 创建第二个 DNS 条目。服务器最终有两个 IP: 一个在域网络上,另一个在另一个和2个不同的 DNS 条目。然后将 Edge 指向另一个 URL,并开始加载 Intranet 页面。似乎只要 PC 的 IP 掩码和页面 URL 不匹配,Edge 就会加载页面。

我提到的博客文章有关于 Loopback 的信息——因为本地主机和 IE 中缺乏 private-NetworkClientServer 功能而被阻塞。据我所知,这些信息都适用于 Edge。

我(以为我)解决了!

失败的事情:

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

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

值得信赖的网站列表中删除域名!

  1. 打开 互联网选项对话框(只要询问 Cortana 或使用 windowskey + s)
  2. 转到 保安选项卡
  3. 点击 受信任网站区域
  4. 单击 网站按钮
  5. 从受信任站点列表中删除问题域名
  6. 单击 申请,然后关闭对话框
  7. 打开边缘(或重新启动它,如果它已经在运行)
  8. 维奥拉

我应该指出,使用常识,我认为不仅仅是网站只是存在于“受信任的网站”区域的事实导致了这个问题。我觉得那个区域应该有什么设置。因此,在我从“网站”列表中删除域名之前,我让所有的设置与我的 Internet Zone 设置完全匹配(中等高安全性,启用保护模式,不需要对所有网站进行服务器验证) ,我还尝试了我能找到的所有其他组合。区域安全设置的组合不起作用。唯一的解决方案是完全从“受信任站点”列表中删除域。有趣的是,它工作在 IE 无论,即使这是互联网设置对话框的 IE。这只会影响 Edge。

Windows 10 Internet Options

Remove Trusted Sites from the Trusted Zone

编辑: 两周后,我将配置更改为在本地 Linux 机器上使用 dnsmasq 并将其用于 DNS,而不是主机文件。我不确定这是不是立刻发生的,但是在某个时候 Edge 又停止工作了!我已经签入了“ allow loop back”复选框 about: Flag,所以我并不期望 CheckNet拳击隔离修复程序能够正常工作。但事实就是如此。边缘版本是20.10240.16384.0。我使用了来自 < a href = “ https://stackoverflow. com/questions/30334289/Can-open-localhost-in-Microsoft-Edge-Project-startan-in-Windows-10-view? rq = 1”> Can & # 39; t open localhost in Microsoft Edge (Project Sparan) in Windows 10 view 的补丁

编辑 # 2 几个月后 Edge 又出现了同样的问题。我尝试了以前的两种解决方案(和其他方案) ,但它们都不再适合我。 我留下这个答案是因为我假设我经历了两个独立的问题。

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

但是你让我看互联网选项,我设法让 IIS 工作为本地网站为我在 Windows10。我就是这么做的:

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

enter image description here

  1. 点击“网站”

enter image description here

  1. 点击“自动检测内部网络”

enter image description here

  1. 单击“确定”。在 MicrosoftEdge 中尝试本地机器站点,现在应该可以工作了。

其他的方法对我都不管用。原来我的问题和 VPN 有关。MicrosoftEdge 仍然不支持 VPN IP 地址,但 Internet Explorer 11支持。令人印象深刻的是,截至2016年5月,这仍是一个问题。

更多详情: Https://social.technet.microsoft.com/forums/en-us/b3a687ae-345d-4c3f-9070-184b33fb1fc6/microsoft-edge-cant-access-vpn-ip-address-but-ie-11-can?forum=win10itprogeneral

目前,MicrosoftEdge 似乎不能很好地使用 VPN。从微软 Edge 连接互联网的机制与 Internet Explorer 11和其他桌面浏览器有一点不同,我不能清楚地解释,因为我对它知之甚少。

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

  • 作为 Windows10中的一种安全措施,您的网络可以阻止环回。

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

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

(Microsoft.MicrosoftEdge_8wekyb3d8bbwe is the identifier for the Edge app)

There's a blog post here giving more detail: https://blogs.msdn.microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-microsoft-edge/

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

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

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

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

当这种情况发生在我身上时,我可以在下面的注册表项中找到一个与该域匹配的域条目。当我删除它的东西工作,一段时间... 我不知道为什么,但边缘将添加它最终回来。

计算机 HKEY _ USERS S-1-5-21-964789662-521690395-1734141374-1111软件类本地设置软件 Microsoft Windows CurrentVersion AppContainer Storage Microsoft.MicrosoftEdge _ 8wekyb3d8bbwe MicrosoftEdge TabProcConfig

对于我来说,我去互联网选项(控制面板) ,然后安全,然后选择 本地内部网,然后在“自动检测内部网络”打勾。这使下面的嵌套选项变成了灰色,Edge 立即开始使用我的主机文件。

在我的例子中,将网络类型从 private 更改为 public 就达到了目的。这也是可重复的,改变网络类型可靠地改变状态从“工作”到获得: Http failure response for (unknown url): 0 Unknown Error

从你的编辑注意到,你现在访问该网站的地址是192.168.0.0.16,而不是127.0.0.1,我猜你遇到了一个问题,边缘浏览器的行为方式不同,这取决于用于访问该网站的界面。我试过的其他浏览器不是这样的。

在我的环境中,我有一个 Virtualbox 主机网络设置,它的 NdisDeviceType 为1。Edge 只允许我在将 NdisDeviceType 更改为0之后通过此界面导航到站点。您需要的注册表项是:

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。我也张贴了这个解决方案的更多细节到 另一个堆栈溢出问题。还可以看到 虚拟包厢票15565