RFC2606为“localhost”tld 声明了以下内容:
“.localhost”TLD 传统上在主机 DNS 实现中被静态定义为具有指向环回 IP 地址的 A 记录,并保留用于此类用途。任何其他用途都会与假定这种用途的广泛部署的代码冲突。
因此,如果我没看错的话,IETF 会说“.localhost”对于本地网站开发来说是一个很好的顶级域名。因此,我的公司要求我们所有的本地开发项目都使用 tld “.localhost”。(我们使用 Vagrant + Puppet 来保持团队中所有的开发环境相同)。例如,hosts 文件将包含如下条目:
192.168.10.10 someproject.localhost
10.9.8.7 anotherproject.localhost
这就是问题所在,这个 tld 在除 Chrome 之外的所有浏览器中都可以正常工作。每当使用 localhost tld 时,Chrome 都会给出 ERR_CONNECTION_REFUSED 消息。如果我像这样更改 tld:
192.168.10.10 someproject.loc
10.9.8.7 anotherproject.loc
铬工作正常。事实上,我已经测试了许多不同的任意 tld,它们在 Chrome 中也都可以正常工作。“localhost”是在 Chrome 上提供 ERR_CONNECTION_REFUSED 消息的唯一 tld。
我使用的是 Windows 7,Chrome 版本 53.0.2785.116 m(64 位)。但是我在 Windows 10 上遇到了同样的错误。我团队中的每个人也都会遇到同样的错误,无论他们是在家里还是工作计算机(Windows 和 Mac)上。
为什么当 tld 为“.localhost”时 Chrome 无法连接?
你在做什么是错误的。
localhost 是指向 127.0.0.1 而不是域的主机名,因此将主机添加到它就好像它是一个域但指向其他地方在逻辑上是不正确的。
您可能对 .local 域感到困惑,但是有理由不使用已在其他问题中回答的任何一个域。本质上,您不应该组成一个假域,您应该获得一个正确的域,然后在主机文件/本地 dns 中的子域下添加主机。