Chrome 中针对特定域(和 127.0.0.1)出现 ERR_CONNECTION_REFUSED,但 localhost 可以工作,其他浏览器对所有域都可以工作

Chrome 中针对特定域(和 127.0.0.1)出现 ERR_CONNECTION_REFUSED,但 localhost 可以工作,其他浏览器对所有域都可以工作

我正在进行本地开发,实际上在使用我的网站时,Chrome 停止响应我的域名(我们称之为 local.mydomain.com)并且只会给出 ERR_CONNECTION_REFUSED。

它在 Safari、Firefox、curl 等中运行良好。(macOS 14.1)

我正在使用我的主机文件并在其中有一个记录(同样,在其他地方也有效):

127.0.0.1 localhost local.mydomain.com

这就是奇怪的地方——“http://localhost”工作正常,但“http://127.0.0.1”不起作用,“http://local.mydomain.com”也不起作用。

这是我尝试过的(现在请记住,对于所有这些,它在其他浏览器和命令行上的 curl 中都可以正常工作):

  • chrome://net-internals,删除了所有相关域记录并删除了 HSTS 记录。还检查了那里的 DNS 查找,所有域都正确解析为 127.0.0.1(尽管直接使用 127.0.0.1 不起作用 - 必须是本地主机)
  • 刷新操作系统级别 DNS​​ ( sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder)
  • 完全重新安装 Chrome(删除应用程序、删除Application Support文件夹中的相关数据等)。
  • 安装了 Chrome Beta 并尝试了。
  • 尝试在各种端口上运行(80、3000、3001,无论什么端口 - 在其他浏览器上都可以运行,但 Chrome 不行)
  • 尝试添加证书并使用 https 运行(适用于其他浏览器,但不支持 Chrome)
  • 重新启动计算机
  • 尝试在计算机上使用其他配置文件
  • chrome://flags/,切换任何与 DNS 相关的功能 - 没有区别。
  • 将 IPv6 功能更改为任何可用设置
  • 将操作系统级 DNS 服务器更改为其他 DNS 服务器(即 8.8.8.8)
  • 删除所有缓存、cookie、存储等。
  • 硬重新加载。
  • 在我的 hosts 文件中添加了新域名,并使用该域名运行服务器。在 Chrome 中不起作用,但在其他地方起作用。

在所有上述情况下,它在所有其他浏览器和 curl 中均可运行,但在 Chrome 中无效。Chrome(或 Chrome Beta)始终立即给出ERR_CONNECTION_REFUSED

到目前为止我已经花了 3.5 个小时在这上面。

为什么可以localhost工作但127.0.0.1不能工作,只能在 Chrome 中工作?我见过相反的情况(其中 localhost 不起作用),但从未见过实际 IP。即使 Chrome 也说localhost解析为127.0.0.1,但直接使用 IP 不起作用。我无法理解。

更新:

我发现如果我注释掉 IPv6 本地主机行(::1 localhost),它就会修复它,这促使我尝试将自定义域也添加到该行,这确实解决了这个问题。

不过我还是想知道为什么 —— 为什么 Chrome 绝对需要 IPv6 特定的映射,而当操作系统中的其他一切都支持 IPv4 时,却忽略了可用的完好无损的 IPv4 映射。

另请注意,具有相同版本的 macOS 和 Chrome 的几乎相同的机器不需要 IPv6 映射。

相关内容