为啥 localhost 不会在 chrome (OSX) 中路由到 127.0.0.1?

Posted

技术标签:

【中文标题】为啥 localhost 不会在 chrome (OSX) 中路由到 127.0.0.1?【英文标题】:Why won't localhost route to 127.0.0.1 in chrome (OSX)?为什么 localhost 不会在 chrome (OSX) 中路由到 127.0.0.1? 【发布时间】:2014-08-10 05:54:04 【问题描述】:

当我使用 node-debug 启动脚本时,它会尝试导航到 URL localhost/debug?port=5858,但找不到在那里提供的页面。

如果我将“localhost”更改为 127.0.0.1,一切正常。

我可以 ping 本地主机,它正确解析为 127.0.0.1

有什么想法吗?

【问题讨论】:

node-inspector 有这个issue。我现在没有时间修复它,但它会在不久的将来修复它 【参考方案1】:

localhost 有一个 IPv6 地址 (::1) 和一个 IPv4 地址 (127.0.0.1)。我的猜测是您的网络服务器仅通过 IPv4 提供服务,而 chrome 更喜欢 IPv6 地址。

$ dscacheutil -q host -a name localhost
name: localhost
ipv6_address: ::1
ipv6_address: fe80:1::1

name: localhost
ip_address: 127.0.0.1
$ netstat -an | grep "[.]80 .*LISTEN"
tcp46      0      0  *.80                   *.*                    LISTEN 

请注意最后一行中的“tcp46”——这意味着 Web 服务器正在侦听 TCP/IPv4 和 TCP/IPv6 连接,如果您运行相同的命令,我怀疑您只会看到“tcp4”。

我不熟悉 Node.js,但 this posting 似乎暗示您可以使用 server.listen(80, '::') 监听两个 localhost 地址。或者,您可以为 IPv4 和 IPv6 地址创建单独的侦听器,如 here 所述。

【讨论】:

太棒了!有机会我会试一试

以上是关于为啥 localhost 不会在 chrome (OSX) 中路由到 127.0.0.1?的主要内容,如果未能解决你的问题,请参考以下文章

为啥chrome浏览器打不开localhost?提示无法显示此网页

为啥对 `Host: localhost` 的 HTTP 请求不会出现在 Apache2 访问日志中?

为啥 Chrome 有时会要求第二次进行基本身份验证,而 Firefox 则不会?

为啥chrome浏览器经常更换端点

为啥 Chrome 会忽略 Set-Cookie 标头?

为啥在预检请求后 Chrome 不在开发工具网络选项卡上显示 POST 请求?