Flutter调用localhost中NodeJS RestAPI方法 iPhone连接Mac场景适用
Flutter iOS端调用Mac本地NodeJS服务操作步骤
- 第一步:获取Mac的局域网IP地址
打开终端执行命令ifconfig | grep inet,找到当前联网网卡(一般是en0对应WiFi,en1对应有线网)下的IP地址,格式通常为192.168.x.x、10.x.x.x,也可以直接在系统设置「Wi-Fi/以太网」的详情页查看IP地址。 - 第二步:修改NodeJS服务监听配置
默认Node服务如果只监听127.0.0.1,仅本机可访问,需要将监听地址改为0.0.0.0,Express框架示例:// 3000为你的服务端口,自行替换 app.listen(3000, '0.0.0.0', () => { console.log('service running on http://0.0.0.0:3000') }) - 第三步:放行Mac防火墙限制
打开系统设置「网络 - 防火墙」,要么临时关闭防火墙,要么将你的NodeJS程序添加到「允许传入连接」的列表中,避免请求被拦截。 - 第四步:调整Flutter请求地址与iOS权限配置
- 将Flutter代码中原来的请求地址
http://localhost:端口或http://127.0.0.1:端口替换为第一步获取的Mac局域网IP,例如http://192.168.3.2:3000/api/xxx - 解决iOS ATS限制:默认禁止未加密的HTTP请求,需要修改项目下
ios/Runner/Info.plist文件,添加如下配置:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> - 将Flutter代码中原来的请求地址
- 验证步骤:先在iPhone自带的Safari浏览器中输入你拼接好的完整接口地址,确认可以正常拿到返回结果后,再运行Flutter应用请求即可。
可选方案(iPhone有线连接Mac时可用):使用端口转发工具将Mac的服务端口映射到iPhone本地,此时Flutter端可直接使用
localhost地址访问,无需修改为局域网IP。
内容的提问来源于stack exchange,提问作者user2570135
相关产品推荐
相关产品推荐

