iOS真机测试连接Mac本地5000端口后端问题求助
确认设备处于同一网络
确保你的Mac和iOS真机连接到同一个Wi-Fi网络(避免使用Mac的热点,部分场景下会存在网络隔离)。在Mac终端输入ipconfig getifaddr en0(Ventura及以后系统)或ifconfig | grep inet,获取Mac的局域网IP(格式通常为192.168.x.x)。修正API请求地址
不要在iOS应用中使用localhost:5000或127.0.0.1:5000,这两个地址在真机上指向设备自身而非Mac。将所有API请求的base URL替换为刚才获取的Mac局域网IP,例如http://192.168.1.100:5000。开放Mac防火墙的5000端口
打开Mac的「系统设置」→「网络」→「防火墙」,点击「选项」,确认你的后端进程(如Node.js)被允许接收入站连接;也可临时关闭防火墙进行测试(测试完成后记得重新开启)。处理ATS安全限制(若使用HTTPS)
如果后端使用HTTPS且是自签名证书,真机默认会拒绝连接。可在iOS项目的Info.plist中添加ATS例外:
右键Info.plist→「Open As」→「Source Code」,插入以下代码:<key>NSAppTransportSecurity</key> <dict> <!-- 更严格的配置:仅允许你的Mac IP --> <key>NSExceptionDomains</key> <dict> <key>192.168.1.100</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict>注意:上线前需移除该配置或替换为合法SSL证书。
确保后端绑定正确的地址
检查TypeScript后端的启动代码,确保服务器监听的是0.0.0.0:5000而非127.0.0.1:5000。以Express.js为例:app.listen(5000, '0.0.0.0', () => { console.log('Server running on port 5000'); });绑定
127.0.0.1会导致服务仅在Mac本地可访问,局域网内其他设备无法连接。验证端口连通性
在Mac终端执行nc -zv 你的MacIP 5000,确认端口是否开放;也可在iPhone上使用网络工具(如Network Analyzer)测试能否连接到Mac的5000端口。
内容的提问来源于stack exchange,提问作者AwesomeCuber

