我无法访问在端口 4000 上运行的本地 NodeJS 服务器。我可以通过 chrome 以 http://localhost:4000 的形式访问该服务器,但无法通过 IP http://192.168.30.30:4000访问。我还尝试从 Android 模拟器访问本地 Web 服务器,但无法访问。
我已通过“设置”->“隐私”->“本地网络”允许 Chrome 和 Android Studio 访问本地网络。允许访问后,我重启了 Chrome 和 Android Studio。我还重启了我的 Mac。此外,我还清除了网络权限,以便可以按照https://forums.macrumors.com/threads/local-network-access-nightmare.2448144/?post=33698401#post-33698401的说明进行重置。
要重置本地网络权限,请从恢复中的终端删除 /Library/Preferences/com.apple.networkextension.plist
rm "/Volumes/Macintosh HD/Library/Preferences/com.apple.networkextension.plist"
这确实重置了权限,以便我可以再次授予,但我仍然无法通过 IP 访问服务器。
我已阅读了大量有关 Sequoia 和无法通过 IP 访问本地服务器的帖子,但我仍然无法成功修复此问题。
有人还有其他我可以尝试的想法吗?
编辑:
我尝试通过几种方式启动我的节点服务器:
server.listen(4000, 0.0.0.0, () => {...
和
server.listen(4000, 127.0.0.1, () => {...
我知道删除 plist 文件的语法并不完美,只是知道我能够删除并适当地提升了 chrome 和 android 上的本地网络访问,并且确实接受了
虽然地址
http://localhost:4000
和http://192.168.30.30:4000
看起来等同,因为它们最终都指向同一个位置,但它们的实现方式不同。直接localhost:4000
指向您设备上的;“环回”地址。会搜索您的网络接口,并与路由器协作找到此端口。 这两种方式都可以实现,但具体实现方式略有不同。192.168.30.30:4000
要在设备上直接调用
http://localhost:4000
,您可以像以前一样操作。server.listen(4000)
从主机 NodeJS 服务器调用也同样允许。相反,要访问
http://192.168.30.30:4000
,您应该采取以下步骤以确保允许并正确配置。server.listen(4000)
,而是调用server.listen(4000, '0.0.0.0')
。这样,无论服务器是在你的设备上还是在“本地主机”上,它都能识别出服务器托管在本地 IP 地址上。http://192.168.30.30:4000
如果这仍然不起作用,甚至完全禁用防火墙并检查 Google Chrome 的隐私设置仍未解决此问题,我建议最终检查您删除此文件的方式。
该命令
rm "/Volumes/Macintosh HD/Library/Preferences/com.apple.networkextension.plist"
要么不执行任何操作,要么会导致错误。要解决此问题,请使用转义码来替换空格(特别是在 中Macintosh HD
),并删除引号。请记住,除非绝对确定不会造成问题,否则强烈建议不要删除系统文件。这可能会给你的设备带来严重问题,而且几乎总有更安全的方法可以做到这一点。
Plist 文件也易于阅读。虽然我不建议直接编辑任何文件,但您可以手动调整不利的设置并手动修复问题。