我正在进行本地开发,实际上在使用我的网站时,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 映射。