【问题标题】:Can't access localhost via IP address无法通过 IP 地址访问 localhost
【发布时间】:2016-11-05 14:43:30
【问题描述】:

我正在查看一个本地托管的网站(如果重要,请使用 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 地址访问本地托管站点没有遇到任何问题。你知道需要改变什么吗?

【问题讨论】:

  • @fvu 如果您将此作为答案,我会将其标记为正确。我将我的Gruntfile.js 主机名更改为0.0.0.0,现在一切都很好。
  • 如果 Skype 正在运行,我会遇到与您描述的相同的问题。
  • 对我来说,问题是我没有在 Windows 中指定我的特定 LAN 连接是“私有”而不是“公共”。现在,当我在 LAN 上使用 Mac ping PC 的本地 IP 时,它可以工作了。

标签: networking localhost


【解决方案1】:

如果您使用的是 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>)

【讨论】:

    【解决方案2】:

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

    注意0.0.0.0的意思是“监听这台计算机上的所有接口”,这很方便,但如果机器有多个接口,可能会导致安全问题。

    【讨论】:

    • 感谢您提供有关 0.0.0.0 的额外提示。
    • @fvu 我猜同样的问题 (stackoverflow.com/questions/51026532/…)
    • 对我来说,情况正好相反。服务可以通过 IP 和主机名访问,但不能通过 localhost 或 127.0.0.1 访问! netstat - tulpn 在 Ubuntu 中。在端口 123 上运行的相同 PID/Service 应该绑定在所有 <IP>:123 、 127.0.0.1:123 、 0.0.0.0:123 ... 上,以便您通过 localhost 或 IP 访问。
    • 我们如何让服务器监听所有的IP地址和端口?我正在使用 laravel 开发 API,现在我需要在同一网络中通过 android 的 ip 访问 localhost。
    • @XantoshLamsal 我不明白你的问题:据我所知,“所有端口”并不容易获得 - 实际上从来不需要,并且“通过同一网络中的 android 通过 ip 访问 localhost”是说至少是一个神秘的陈述:localhost 是给您正在使用的机器的名称,而不是网络上的特定机器。
    猜你喜欢
    • 2015-06-11
    • 2010-12-02
    • 2018-02-24
    • 2017-10-27
    • 2011-11-21
    • 2015-05-06
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    相关资源
    最近更新 更多