为什么 localhost 在 Windows 8.1 中不起作用,但 127.0.0.1 可以起作用?

为什么 localhost 在 Windows 8.1 中不起作用,但 127.0.0.1 可以起作用?

我有一个在端口 9876 上运行的 HTTP 服务器。

我将其放入http://127.0.0.1:9876/Chrome 后页面立即加载。

我将其放入http://localhost:9876/Chrome,但页面始终无法加载。

我从未修改过 C:\Windows\System32\drivers\etc\hosts。

hosts 文件中的每一行都被注释掉。

文件中存在以下几行,可能相关:

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost

正如我所说,我自己没有添加这些行。我没有编辑 hosts 文件。

显然,我可以取消注释第二行以使 localhost 正常工作。但是如果第一行是正确的,为什么还需要这样做呢?第一行是微软写的吗?他们似乎在告诉我,localhost 无需定义即可正常工作。

答案1

我找不到可靠的文档,但似乎自 Windows 7 以来,他们将本地主机解析更改为 DNS。我猜想 DNS 客户端服务实际上会在您执行操作时交还本地主机,因为您的 DNS 服务器(无论它位于何处)可能无法解析本地主机。您始终可以设置 hosts 文件,它应该会覆盖 DNS 客户端给您的内容。

这至少可以证明它自 Windows 7 以来发生了变化:

http://support.microsoft.com/kb/972034

我假设它是 DNS 服务,因为在我的 Win8 机器上,这些行被注释掉了,但是 localhost 解析回 ::1 ,当然我的 DNS 没有配置为 IPv6,即使配置了,它也无法解析 localhost。

答案2

如果删除第二个“#”,localhost 也应该可以正常工作。

# 127.0.0.1     localhost

127.0.0.1     localhost

答案3

该评论谈论的是 Windows 本身中的 DNS 实现,而不是 Chrome 中的 DNS 实现。

答案4

升级到 Windows 8.1 将删除部分或全部添加的服务...例如 Apache、MySQL。只需查看计算机上运行的服务,您就会注意到所有与 Web 相关的服务都消失了。

相关内容