Firefox 无法连接到本地站点,但 Chrome 可以

Posted

技术标签:

【中文标题】Firefox 无法连接到本地站点,但 Chrome 可以【英文标题】:Firefox can't connect to a local site, but Chrome can 【发布时间】:2018-10-15 11:18:13 【问题描述】:

我有一个本地运行的 Web 服务器,它映射到 MacOSX 机器上的 project.name.localhost:3011。我的 /etc/hosts 定义:

127.0.0.1 project.name.localhost

我需要在 Chrome 和 Firefox 中浏览到此服务器。当我访问http://project.name.localhost:3011/ 时,Chrome 运行良好。 Firefox 给出“无法连接”连接错误。我可以在本地服务器的控制台中看到,当我从 FF 尝试时,甚至没有向服务器发送连接尝试。

这是在 FF 版本 59.0.2(64 位)上。 FF 对像这样的公共互联网站点和 google 没有任何问题。

我已经尝试了此处建议的所有步骤: https://support.mozilla.org/en-US/kb/firefox-cant-load-websites-other-browsers-can 总之,这些步骤是:

检查代理设置,确认代理已关闭 在about:config 中将network.dns.disableIPv6 设置为trueabout:config 中将network.dns.disablePrefetch 设置为true 已清除所有历史记录,包括 cookie 和缓存

还尝试禁用 HSTS,如下所述: https://support.mozilla.org/en-US/questions/1204380

ping project.name.localhost

也可以正常工作。没有本地 DNS 问题。

http://127.0.0.1:3011/ 给了我与使用主机名完全相同的错误。但是,我需要通过主机名访问服务器。它不是也不应该被配置为在直接 IP 上响应。

如何让 FF 通过主机名访问我的本地 Web 服务器?

编辑:两位同事在设置系统时遇到了他们所描述的相同问题,但他们都说一两天后“它就自行消失了”。我的问题持续数周并重新启动。


请求的控制台输出:

GET http://global.appen.localhost:3011/invoice_groups

Request headers (398 B) 
Accept  
text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8
Accept-Encoding 
gzip, deflate
Accept-Language 
en-US,en;q=0.5
Cache-Control   
no-cache
Connection  
keep-alive
Host    
global.appen.localhost:3011
Pragma  
no-cache
Upgrade-Insecure-Requests   
1
User-Agent  
Mozilla/5.0 (Macintosh; Intel …) Gecko/20100101 Firefox/59.0

网络时序:

Blocked:          → 1 ms
DNS resolution:                  → 1 ms

【问题讨论】:

嘿!通常不鼓励在多个站点上交叉发布相同的问题,我看到您也在 SU 上发布了此问题:superuser.com/questions/1319868/… 请耐心等待,如果您希望您的问题引起更多关注,您可以悬赏两天后 如果您的用户配置文件损坏或配置错误,您是否尝试创建一个新的 Firefox 用户配置文件进行测试? 这可能是代理问题。您可能已经配置了代理,在这种情况下 localhost 将指向代理。请 100% 确定 Firefox 中没有配置代理或自动代理 我要冒昧地问一下您是否正在使用诸如 HotSpot Shield 之类的 *** 服务?可以显示 Chrome 和 Firefox 的屏幕截图吗? 您现在刚刚收到此错误,或者您已经在处理该错误并且错误只是弹出? 【参考方案1】:

编辑:不工作 [似乎 internate 停止在 Firefox 中工作]

在火狐类型 关于:配置

在其中搜索 localhost 并将下面的标志设为 true

network.dns.native-is-localhost

已编辑

抱歉,它的解决方案不可靠

【讨论】:

感谢我找到的这个独特而简单的正确答案。 这会使任何不是本地主机的站点停止工作。 因为这个小变量损失了 3 天 我刚刚在 Linux Mint 中更新了 Firefox,并且在我的本地主机上使用 https 的网站存在问题。很棒的贡献芽!【参考方案2】:

您可能只需要清除 FF 浏览器缓存。有时您必须清除所有内容,而不仅仅是您正在处理的网站。你已经这样做了吗?旧的缓存会产生像这样的非常神秘的问题。

【讨论】:

已经尝试过了——清除缓存是我提到的文章中的步骤之一(我将编辑问题以包含这些步骤) 我想通了。但需要注意的一点是,有时您必须清除整个缓存,而不仅仅是单个站点的缓存。你可能这样做了,以防万一。 只是意味着我现在必须重新登录所有网站 - 烦人【参考方案3】:

Firefox 对“.localhost”进行了特殊处理,这似乎导致了问题。当我将主机文件从 project.name.localhost 更改为 project.name.devl 时,它开始工作。

【讨论】:

【参考方案4】:

我在使用 Firefox 时遇到问题,它打开了 localhost:1234,但无法从 static.localhost:1234 连接和加载任何资源。

这只发生在指定端口的子域上。因此,static.localhost 工作正常。

添加

127.0.0.1 static.localhost

hosts 文件(位于C:\Windows\System32\drivers\etc)为我解决了这个问题。

【讨论】:

这行得通。在 Linux 和 Mac 中需要编辑/etc/hosts【参考方案5】:

我会建议几件事:

在 hosts 文件中,添加名称 www.project.name.localhost,以防 Firefox 向其中添加 www。它看起来像这样:

127.0.0.1 project.name.localhost www.project.name.localhost

当您使用http://project.name.localhost:3011/ 时,使用 HTTP 标头分析器(例如 Fiddler)来监控 Firefox 和 Chrome 正在建立的连接。这将告诉您解析 IP 是否存在问题,或者 Chrome 发出的请求是否存在差异。

ping 时,使用 /4 检查 IPv4 和 /6 检查 IPv6 以确保正确解析。

【讨论】:

【参考方案6】:

您也可以尝试从命令行运行:

nbtstat -R

这将刷新您的 Windows 名称缓存。

我真的不认为这会解决这个问题,因为该名称适用于一个浏览器,而不是 FF。

为了确定,当您清除 FF 缓存时,请转到选项 -> 隐私和安全。从那里您要清除“缓存的 Web 内容”和“站点数据”。这两样你都买了吗?

如果它仍然不起作用,您可能发现了一个 FF 错误,尽管这似乎不太可能。指定主机和端口号是非常标准的,在这种情况下,FF 似乎不太可能无法做到这一点。

您也可以分解问题。当你只调用没有端口号的主机时会发生什么?您可能希望让您的服务器在端口 80 上提供一个测试页面,并查看该部分调用是否正常工作。这至少会将其缩小到端口号。或者,也许将其缩小到它没有正确调用服务器这一事实。

【讨论】:

这是在 Mac 上,不是 Windows【参考方案7】:

尝试创建另一个端点,例如 localhost:3011/test,看看是否有效,firefox 可以检查您的 url,并且您的后缀或前缀可能认为不完整并自动添加一些前缀,在位置栏中输入 about:config 然后搜索:fixup并双击 browser.fixup.alternate.enabled 使其变为 false。看看有没有帮助。

【讨论】:

【参考方案8】:

我使用的是简单的机器名称或别名,我通过这个设置解决了这个问题:

browser.fixup.dns_first_for_single_words = true

虽然正确的解决方案是使用name.localhost 而不仅仅是name

【讨论】:

【参考方案9】:

这与您在机器中的配置无关。当您访问 localhost 的子域时,Firefox 会添加“www”前缀,而 Chrome 不会。

【讨论】:

不,它没有。你能引用这个吗? 我并不是故意要给人以敌对的印象,但是由于您是提出索赔的人,因此您有责任提供高质量的参考。它还使您的答案更加可靠。 根据我在维护依赖于 Host 标头的应用程序以及使用 Firefox 和 Chrome 进行测试的丰富经验。每当我访问 http://sub.domain.localhost 时,我还没有遇到过 Firefox 隐形添加 www 前缀的情况。现在我们俩的经历发生了冲突。我找不到您的主张的引文,这意味着您的答案要么是错误的,要么您被误导并在问答网站上传播错误信息,仅仅是因为“您没有时间”。仅供参考,引用违反直觉的说法是一种很好的做法,而在帮助论坛上说“我们不在学院”则不是。 让我告诉你。 [github] (github.com/mozilla/gecko-dev/blob/…) 检查这段代码。如果在设置中配置,这是 Firefox 在主机名中添加“www”前缀。那么为什么firefox会在子域localhost中添加www呢?因为firefox由于某种原因认为它不是本地域。然后我用谷歌搜索,发现 firefox 有 network.dns.localDomains 配置,这使 firefox 能够将 localhost 的子域视为本地域。我们可以同意 Firefox 现在添加“www”前缀吗? 是的,我们可以,但它不会无形地做到这一点。尽管如此,您现在不仅给出了引用,而且还给出了更完整的答案,OP 的问题的可能解决方案是:“将 localhost 添加到 firefox 的 network.dns.localDomains 配置”。我建议您将该建议添加到您的答案中。完成此操作后,我将能够将我的反对票更改为赞成票。祝你有美好的一天。

以上是关于Firefox 无法连接到本地站点,但 Chrome 可以的主要内容,如果未能解决你的问题,请参考以下文章

无法连接到本地 PHP 站点(未定义索引和未定义变量错误)[重复]

在 Windows 中无法连接到本地主机

无法从 Mac lion 连接到远程 mysql

无法使用 Edge 访问我的本地虚拟盒托管站点(适用于 Chrome/Firefox/IE11)

我的电脑通过 *** 连接,Android 模拟器无法访问本地 Intranet 站点

站点到站点 *** 与点到站点 ***