Microsoft Edge 不会在 Vagrant VM 中加载本地 nginx 网站

Posted

技术标签:

【中文标题】Microsoft Edge 不会在 Vagrant VM 中加载本地 nginx 网站【英文标题】:Microsoft Edge won't load local nginx website in Vagrant VM 【发布时间】:2016-11-14 23:26:17 【问题描述】:

我遇到了一个奇怪的问题,即 Microsoft Edge 无法加载托管在 vagrant 虚拟机中的本地 Craft CMS 网站。任何加载本地配置的主机名或 IP 的尝试都会返回“嗯,我们无法访问此页面”。错误。

我的主机文件中有一行:

192.168.10.12 test.craft.dev

我已经阅读了有关 Microsoft Edge 无法正确处理主机文件的各种资源,但即使是 IPv4 地址也无法正常工作。我已经尝试了一些与 Internet 选项调整相关的建议,但没有任何效果,但似乎主机文件不是问题。

网络配置使用 NAT 并在192.168.10.x 范围内设置 IP(由Homestead.yaml 定义,如果我分配一个 public_network 并使用我的 LAN 网络 DHCP 范围获取 IP,Edge 可以访问此 IP,但它没有解释为什么所有其他浏览器都能正常工作而 Edge 没有它。

值得一提的是,本地 Craft 主机名可以在所有其他浏览器(包括 IE)中正常加载。由于某些网络级别的问题,Microsoft Edge 在 VirtualBox 中加载本地网站时是否存在特定问题?

【问题讨论】:

你是否在 about:flags 中启用了 localhost 环回? @Sampson 是的,已启用环回。 有人找到解决方案了吗? @Blakethepatton 除了切换适配器类型以在 LAN 网络范围内获取 IP 之外,我无法让它工作。这似乎是 Edge 以不同方式对待网络堆栈的方式。 【参考方案1】:

安装并运行fiddler。它会自动完成所有工作。

【讨论】:

这按预期工作。非常感谢你分享这个。此答案应标记为有效解决方案。 这是我在尝试了网络上的所有提示后能找到的唯一可行的解​​决方案。提琴手知道我们不知道什么:D 迄今为止最简单的解决方案。下载、安装并运行 fiddler,Homestead 立即在 Edge 中运行【参考方案2】:

Edge 浏览器似乎会注意您用来访问网站的界面。我的猜测是您正在使用 Vagrant 来启动 Virtualbox VM。我在下面的回答假设您通过 Virtualbox 仅限主机的网络或其他 NdisDeviceType 为 1 的网络接口访问。

什么不起作用

以下都不适合我:

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

    控制面板、网络和 Internet、Internet 选项、安全性以及将我的站点明确添加到受信任的站点或本地 Internet。

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

我的环境

就我而言,我在 Windows 10 build 1803“Spring Creators Update”上运行了 VirtualBox 5.2.18。使用边缘 42.17134.1.0。我的 VM 来宾有一个仅限主机的网络。例如192.168.7.0/24。我无法从 VM 主机上的 Edge 访问地址,例如 http://192.168.7.0。该站点由运行在我的 VM 来宾中的 Web 服务器托管。请注意,此地址在 Google Chrome、Internet Explorer 11 等中运行良好。

什么有效

解决方法如下:

    查找仅主机网络的接口号。我从 Windows 命令行运行“路由打印”,在我的例子中,“接口列表”中显示的第一个数字是 17。

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

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class4d36e972-e325-11ce-bfc1-08002be10318\XXXX

在我的例子中,XXXX 是 0016,因为我的接口号是 17。我必须将 *NdisDeviceType 从 0 更改为 1。该键名中的 * 是一个字面星号。我必须重新启动才能使更改生效。

答案是从“Jani L”于 2017 年 10 月 3 日在下面引用的第一个 URL 上发布的帖子中收集到的,但它没有提供有关如何确定接口编号的线索。下面的第二个参考是我最初发布此解决方案的线程。

参考资料:

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

【讨论】:

【参考方案3】:

您似乎正在使用Laravel Homestead box。如果是这样,您可以将您的主机端口之一forward 连接到 VM 的 80 端口。因此,您将能够访问托管在 MS Edge 上的 VM 上的网站。

这是我所做的:

ports:
    - send: 8000
      to: 80

如果您不想输入 yourdomain.dev:8000,您可以使用 fiddler。因此,您将只能输入 yourdain.dev。 :D

【讨论】:

为什么要这样做?我不明白这个问题,所以我不确定这是什么“修复”。 所以,我认为您应该先了解问题...把它改成8000,它工作了。 因此,您应该拥有:127.0.0.1 test.craft.dev 而不是:192.168.10.12 test.craft.dev(流浪机器的 IP),然后在 MS Edge 上键入 test.craft .dev:8000,它会工作。 那么edge默认监听8000端口?为什么chrome监听80端口而不监听edge?谢谢!! 我的回答是:我不知道,对于这两个问题。我只是说它永远不会通过 80 端口在 vagrant 机器上加载网站。不过,您可能可以使用其他端口。

以上是关于Microsoft Edge 不会在 Vagrant VM 中加载本地 nginx 网站的主要内容,如果未能解决你的问题,请参考以下文章

如何禁止Microsoft Edge自定义协议对话框警告?

Chrome内核的Microsoft Edge 浏览器开始推送,到底香不香?

如何在Linux中安装Microsoft Edge浏览器

最新Microsoft Edge!使用chromium内核

怎么关闭microsoft edge浏览器

windows 10中Microsoft Edge Beta登录账户提示:以管理员身份运行 Microsoft Edge 时不支持登录。请以非管理员身份重新启动 Microsoft Edge,然后重新