将设备连接到Mac本地服务器?

121

如何允许任何设备(例如iPhone)通过WLAN连接到我的Mac本地主机服务器?

在我的Mac上,我正在运行一个“Hello World”HTTP Node.js服务器,它提供了一个页面,在Safari成功打开,位于http://localhost:1337。在终端中运行ipconfig getifaddr en1会输出192.168.1.9

但是,当Safari尝试打开http://192.168.1.9:1337时,iPhone和Mac上的Safari都显示“Safari无法连接到服务器”。

我认为这不应该涉及port forwarding,因为我只想使HTTP服务器在私有环境下可用,而不是公开的。

相关:


1
问题在这里得到回答了: https://dev59.com/P2ox5IYBdhLWcg3wSCfk - Andreas Norman
我很惊讶没有看到像这个回答一样适合我的:https://dev59.com/LnA75IYBdhLWcg3wv7wj#41857012 - Ryan
14个回答

71

我曾遇到同样的问题。我在我的Mac上关闭Wi-Fi,然后再次打开它,这解决了问题。点击设置>关闭Wi-Fi。

我通过在我的iPhone上打开Safari并输入我的主机名或IP地址进行测试。例如: http://<name>.localhttp://10.0.1.5


1
很奇怪,这对我有用!非常感谢。我不明白为什么。 - Björn Grossmann
5
加一个对于 <name>.local 的计数器——测试不再需要静态 IP 地址! - Adam Carter
1
我花了一整天的时间来弄清楚这个问题。切换我的Mac的WiFi开关解决了它。很奇怪。 - oif_vet
1
奇怪的事情...对我有用。谢谢! - trnc
5
对我而言,http://<name>.local 对我有用。为了进一步解释,你的 Mac 的 <name> 可以在“系统偏好设置 > 共享”中找到。在你的“计算机名称: ”下面,你可以找到“你的本地网络上的计算机可以访问您的计算机: <name>.local”。 - John Lay
显示剩余9条评论

65
让你的服务器监听0.0.0.0而不是localhost

2
啊,谢谢,这对我有用。 - aks.
2
对于那些遇到其他答案无法解决的问题的人 - 试试这个! - Trent
6
或者,您可以指定“0.0.0.0”来直接绑定到本地IP。如果您更换网络并未分配相同的IP地址,则将防止出现问题。 - Cole Murray
2
抱歉,您能具体说明如何“让您的服务器侦听”吗? - gmarais
2
@gmarais,这取决于您如何构建服务器。在这个Node.js应用程序示例中,您需要将127.0.0.1更改为0.0.0.0 - ma11hew28
显示剩余3条评论

34

我只能使用 http://name.local:1337 访问我的 iPhone。需要添加“.local”,你可以在“系统偏好设置 -> 共享 -> 计算机名称”下找到计算机名称。


我尝试使用了IP地址,无论是有还是没有防火墙以及许多其他建议的解决方案,但只有这一个有效。我正在使用Node.js中的Express,在端口3000上运行本地主机站点。 - lostAtSeaJoshua
您也可以通过在控制台中输入 whoami 来查找您的“名称”。 - Jadam
2
@Jadam 这种技术对我不起作用。我得到了两个不同的名称。对于本地服务器情况,“计算机名称”是有效的。 - moeamaya
我可以使用这种方法访问默认的本地主机站点,但是有没有人知道如何通过设备访问虚拟主机域名?例如:http://vhost-servername.local:1337/ - TheKarateKid
1
对我来说,使用 name.local 从未有过进展,但是使用实际的 IP 地址却有效。我的建议是进行故障排查时要使用具体的实际 IP 地址,而不是像 name.local 这样方便却增加了另一层复杂性的方式。 - Kalnode
1
这应该是被接受的答案。它不需要对当前Node.js服务器文件进行任何额外的设置或修改。@ma11hew28 - BenS

18
我的问题也是一样的,但解决方法与防火墙设置有关。原来node被设置为阻止进入的流量。我知道有问题是因为我曾经可以从手机访问我的本地主机。请前往“系统偏好设置”->“安全性与隐私”->“防火墙”->“防火墙选项”,然后向下滚动,直到找到node,并确保node的设置为“允许传入连接”。更改设置后,我可以通过http://192.168.1.11:3000访问运行在我的Mac上的localhost服务器(端口3000)。

防火墙是唯一的罪魁祸首。其他一切都很好。 - mythicalcoder
哦,太好了,你救了我!谢谢!! - GoOlga

17
尝试启用Internet共享:
打开“系统偏好设置” -> “共享”。 勾选Internet共享以启用,它会提示您确认您的操作,请选择“确定”。 如果您的iPhone使用USB连接,请在右侧的“共享您的连接”列表中勾选iPhone USB。
完成后,请尝试使用您的Mac IP在Wi-Fi上访问本地服务器。

7

我解决了一个类似的问题。

  • 将Mac和iPhone连接到同一个Wi-Fi
  • 更改iPhone的Wi-Fi设置,将http代理设置为手动,并将服务器更改为您的Mac IP地址并设置端口。我的端口是80。

图像一

图像二

  • 您可以在iPhone的Safari中输入http://<Mac ip>:<your customer server port>

6

苹果计算机使用者可以在 系统偏好设置 > 共享 下检查“电脑名称”文本输入框下方找到自动生成的个性化 URL。要访问它,可以通过与计算机相同的 Wi-Fi 连接,在 iPhone 上输入此 URL 加端口号(例如 your-name.local:8000)。


5

请确保您的手机和Mac机器都连接到同一个WiFi,并且您就可以轻松访问http://<machine-name>.local了。


5
  1. 通过USB将您的iPhone连接到Mac电脑。

  2. 打开“网络实用工具”(按下cmd+空格,然后键入“网络实用工具”)

  3. 进入“信息”选项卡

  4. 点击下拉菜单,选择“iPhone USB”,如下图所示:

    步骤4的照片

  5. 您将找到一个类似于“xxx.xxx.xx.xx”的IP地址。在您的iPhone上打开Safari浏览器,并输入IP_address:port_number

    例如:169.254.72.86:3000

[注意:如果IP地址字段为空,请确保您的iPhone已通过USB连接,退出“网络实用工具”,重新打开并检查IP地址。]


3

如之前所发布的,我按照moeamaya的回答进行操作,但需要稍作修改才能在Sites目录中看到我的工作。

http://[name].local.~[username]/

[name] 是指(系统偏好设置/共享/“计算机名称”)

[username] 可在以下位置找到:

/etc/apache2/users/username.conf

希望这能帮到你!

在Mac上,我在哪里可以找到username.conf文件? - potato
1
请在根目录下的 /Users 文件夹中查找 @brumbrum。 - Alfred
1
你也可以在终端中输入 whoami - Alfred

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接