Expo React Native项目iOS真机Axios网络错误求助
Expo iOS真机Axios网络错误问题解决方案
这是Expo + iOS真机调试时的常见问题,根本和CORS无关——CORS是浏览器端的安全限制,React Native并不遵循这套规则,模拟器和Postman能正常请求也印证了这一点。下面是几个简单直接的排查和解决步骤:
替换API地址的localhost/127.0.0.1
模拟器能直接访问电脑的localhost,但真机和电脑不在同一本地环境。把请求地址换成电脑的局域网IP(比如http://192.168.1.100:3000/api/register),同时确保手机和电脑连在同一个WiFi下。临时关闭电脑防火墙/杀毒软件
不少防火墙会拦截真机对本地服务器的请求,关闭后再测试,大概率能解决问题。允许iOS明文HTTP请求(如果API用的是HTTP)
iOS默认会阻止非HTTPS的网络请求,可在项目根目录的app.json里添加配置:{ "expo": { "ios": { "infoPlist": { "NSAppTransportSecurity": { "NSAllowsArbitraryLoads": true } } } } }注意:上线前必须切换到HTTPS,或者配置特定域名的例外,避免App Store审核被拒。
替换Axios适配器
偶尔Axios默认适配器在iOS真机上有兼容性问题,试试axios-adapter-react-native:- 安装依赖:
npm install axios-adapter-react-native - 修改Axios实例:
import axios from 'axios'; import axiosAdapter from 'axios-adapter-react-native'; const api = axios.create({ baseURL: 'http://你的局域网IP:端口', adapter: axiosAdapter });- 安装依赖:
先验证网络连通性
在真机Safari里直接输入API地址,看能不能正常返回数据。如果Safari也打不开,那就是网络连通问题,和代码无关。
内容的提问来源于stack exchange,提问作者Ckeihas
相关产品推荐
相关产品推荐

