真实iOS设备调用本地localhost Node.js API时出现连接故障
解决真实iOS设备无法访问本地Node.js API的问题
核心原因
iOS设备上的localhost指向设备自身,而非你的开发电脑,这就是为什么Android设备和模拟器能正常访问,但真实iOS设备会出现连接问题。
解决步骤
获取电脑的局域网IP
- Mac用户:打开终端执行
ifconfig,找到en0网卡下的inet字段(格式类似192.168.1.100) - Windows用户:打开命令提示符执行
ipconfig,找到“无线局域网适配器WLAN”下的IPv4地址
- Mac用户:打开终端执行
修改API请求地址
把代码里所有http://localhost:端口号替换成http://你的局域网IP:端口号,比如原来的http://localhost:3000/user改成http://192.168.1.100:3000/user确保Node服务器监听局域网请求
启动服务器的代码里,把监听地址设为0.0.0.0,这样服务器能接收局域网内所有设备的请求:app.listen(3000, '0.0.0.0', () => { console.log('服务器运行在 http://0.0.0.0:3000'); });绕过iOS的HTTP安全限制(开发环境)
iOS默认禁止非HTTPS的网络请求,需要在项目的Info.plist中添加配置:
右键Info.plist选择“Open As -> Source Code”,添加以下代码(替换成你的局域网IP):<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>192.168.1.100</key> <dict> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict>注意:上线前一定要移除这个配置,改用HTTPS。
检查电脑防火墙
确保你的电脑防火墙允许Node.js使用的端口(比如3000)接收来自局域网的连接,否则iOS设备的请求会被拦截。
内容的提问来源于stack exchange,提问作者Atif Ahmad
相关产品推荐
相关产品推荐

