如何从iOS设备访问本地Node.js Express服务器?真机连接问题咨询
不用部署到外部平台!同一局域网下真机访问本地Express服务器的解决方案
不用非得把服务器部署到Heroku这类平台哦!同一局域网内完全可以直接让你的iPhone真机访问本地运行的Node.js Express服务器,我给你梳理下具体操作步骤:
第一步:找到电脑的局域网IP地址
你需要获取你的电脑在当前WiFi局域网内的私有IP,而不是公网IP:- Mac用户:打开终端,输入
ipconfig getifaddr en0就能得到WiFi对应的IP;或者输ifconfig找en0下的inet字段值。 - Windows用户:打开命令提示符(CMD),输入
ipconfig,找到当前连接的WiFi对应的「IPv4地址」。
- Mac用户:打开终端,输入
第二步:修改App里的API请求地址
把Alamofire请求里的http://localhost:5000/api/test,替换成你刚才查到的局域网IP,比如http://192.168.1.103:5000/api/test,注意端口号要和你的Express服务器监听的端口保持一致(这里是5000)。第三步:允许电脑防火墙放行服务器端口
很多时候防火墙会阻止局域网内的设备访问你的电脑端口,所以要设置一下:- Mac:打开「系统设置」→「网络」→「防火墙」→「防火墙选项」,添加你的Node.js进程,或者直接创建规则允许5000端口的入站连接。
- Windows:打开「控制面板」→「Windows Defender防火墙」→「高级设置」,新建入站规则,允许TCP协议的5000端口访问。
第四步:确认设备在同一局域网
确保你的iPhone和运行Express服务器的电脑连接的是同一个WiFi网络,这是真机能找到你电脑的前提。(可选)解决iOS的HTTP请求限制
如果你的服务器用的是HTTP(不是HTTPS),iOS默认会阻止非安全的网络请求,需要在App的Info.plist里添加配置:
右键Info.plist选择「Open As」→「Source Code」,添加以下代码:<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>注意:这个设置只适合测试阶段,正式上线的App必须使用HTTPS,不能用这个配置。
按照这些步骤操作后,你的iPhone真机就能顺利访问本地的Express服务器了,完全不用先部署到外部平台~
内容的提问来源于stack exchange,提问作者Mike Miller
相关产品推荐
相关产品推荐

