无法通过 IP 地址访问本地主机

Can't access localhost via IP address

我正在查看本地托管的网站(使用 grunt serve,如果重要的话)。我可以通过 http://localhost:9000/http://127.0.0.1:9000/ 查看它,但不能通过 http://10.0.0.16:9000/.

10.0.0.16 是我的本地 IP 地址(来自 ifconfig 或系统偏好设置),但我无法从托管它的设备或其他设备访问位于 http://10.0.0.16:9000/ 的本地托管内容网络上的设备。

当我的计算机在其他网络上(仅在我的家庭网络上)时,我使用本地 IP 地址访问本地托管站点没有遇到问题。您知道需要更改什么吗?

如果您可以通过127.0.0.1(或localhost)访问您自己机器上的服务器运行,但不能通过计算机的IP地址访问,这意味着服务器软件已配置仅在本地主机接口上收听。这是一个配置项,为了避免暴露潜在的不安全服务器,许多服务器程序都预先配置为仅在 localhost 上侦听。这样您就可以在公开服务器之前安全地在本地进行测试。

注意0.0.0.0表示"listen on all interfaces present on this computer"方便,但如果机器有多个接口可能会导致安全问题。

如果您使用的是 Python 3.8,则这是 known bug。解决办法是用-bind参数手动指定IP地址或者使用Python 3.9.

python -m http.server 8000 --bind 127.0.0.1(或0.0.0.0<insert-your-ip-here>