微软Edge无法加载Vagrant虚拟机内NGINX本地网站

7
我正在遇到一个奇怪的问题,Microsoft Edge不能加载在一个vagrant虚拟机内托管的本地Craft CMS网站。任何尝试加载本地配置的主机名或IP都会返回“Hmm, we can't reach this page.”错误。
我hosts文件中有一行:192.168.10.12 test.craft.dev 我已经阅读了各种与Microsoft Edge不正确处理hosts文件相关的资源,但IPv4地址也无法正常工作。我已经尝试过几个与Internet Options调整相关的建议,但没有任何作用,看起来hosts文件不是问题所在。
网络配置使用NAT并设置一个IP范围为192.168.10.x(由Homestead.yaml定义),如果我分配一个公共网络并从我的LAN网络DHCP范围获取一个IP,Edge可以访问此IP,但这并不能解释为什么所有其他浏览器都能工作而没有Edge。
值得一提的是,本地Craft主机名在其他所有浏览器中(包括IE)都可以正常加载。Microsoft Edge是否因为某些网络层问题而无法加载VirtualBox中的本地网站?

您是否在about:flags中启用了本地主机环回? - Sampson
@Sampson 是的,回环已启用。 - James White
有人找到解决方案了吗? - Blakethepatton
@Blakethepatton 除了将适配器类型切换为在 LAN 网络范围内获取 IP,我无法让它正常工作。看起来这是 Edge 处理网络堆栈的不同方式。 - James White
3个回答

7

安装并运行Fiddler。它会自动完成所有操作。


1
这个按预期工作。非常感谢您的分享。应该将此答案标记为有效解决方案。 - jpruiz114
1
这是我在尝试了网上所有提示后找到的唯一可行的解决方案。Fiddler知道什么我们不知道:D - Martin Eckleben
1
到目前为止最简单的解决方案。下载、安装并运行 Fiddler,然后在 Edge 中 Homestead 就能立即工作了。 - Erin

1
Edge浏览器似乎关注您用于访问站点的接口。我猜想您正在使用Vagrant启动Virtualbox VM。下面的答案假设您是通过Virtualbox host-only网络或其他NdisDeviceType为1的网络接口进行访问。

未成功的尝试

以下方法对我都没有起作用:

  1. 使用about:flags并确认“允许本地主机环回”已开启

  2. 控制面板,网络和Internet,Internet选项,安全性,并将我的站点明确添加到受信任站点或本地Internet中。

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

我的环境

在我的情况下,我运行的是Windows 10 build 1803“Spring Creators Update”上的VirtualBox 5.2.18。使用Edge 42.17134.1.0。我为我的VM客户端设置了一个host-only网络,例如192.168.7.0/24。我无法从VM主机上的Edge访问诸如http://192.168.7.0之类的地址。此站点由在我的VM客户端中运行的Web服务器托管。请注意,此地址在Google Chrome、Internet Explorer 11等中完全正常工作。
有效解决方法如下:
  1. 查找host-only网络的接口号。我从Windows命令行运行了“route print”,在我的情况下,“interface list”中显示的第一个数字是17。

  2. 使用regedit将接口类型从1更改为0。关键是:

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

在我的情况下,XXXX是0016,因为我的接口号是17。我必须将*NdisDeviceType从0更改为1。该键名中的*是一个字面上的星号。我不得不重新启动计算机才能使更改生效。
这个答案来自于“Jani L”在2017年10月3日发布的第一个引用链接中的帖子,但它没有提供如何确定接口号的线索。下面的第二个参考链接是我最初发布此解决方案的帖子所在的线程。
参考资料:

https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10142843/

https://social.technet.microsoft.com/Forums/en-US/0face535-3c7a-4658-be34-6c376322ca34/microsoft-edge-cant-open-local-domains

https://www.virtualbox.org/ticket/15565


0

看起来你正在使用Laravel Homestead box。如果是这样,你可以将主机端口之一转发到VM的80端口。这样,你就能够在MS Edge上访问托管在VM上的网站。

这是我所做的:

ports:
    - send: 8000
      to: 80

如果您不想每次都输入yourdomain.dev:8000,您可以使用fiddler。这样,您只需要输入yourdomain.dev即可。 :D


为什么这会起作用?我不理解问题,所以我不确定这是在“修复”什么。 - Radmation
所以,我认为你应该先理解问题,然后... 如果您尝试通过80端口访问位于Vagrant Box上的任何网站,则MS Edge不会显示它们,这就是为什么我将其更改为8000,然后它可以正常工作。 - Lucas Reis
所以,不要使用:192.168.10.12 test.craft.dev(vagrant机器的IP)你应该使用:127.0.0.1 test.craft.dev然后在 MS Edge 中只需输入 test.craft.dev: 8000 即可运行。 - Lucas Reis
1
Edge默认监听8000端口?为什么Chrome监听80端口而Edge不监听呢?谢谢! - Radmation
我的答案是:对于这两个问题,我不知道。我只是说在虚拟机上通过80端口从未加载过网站。不过你可能可以使用其他端口。 - Lucas Reis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接