React Native+Axios移动端请求报错TypeError: Network request failed解决咨询
问题原因分析
核心原因是目标服务器的SSL证书不被React Native信任,Postman的提示“unable to certify the first certificate”是关键线索:
- Postman默认会自动绕过部分证书校验(或用户手动关闭了校验),所以能正常请求;
- React Native默认会严格校验SSL证书,当服务器证书为自签名、过期,或根证书不在系统信任列表中时,就会触发
TypeError: Network request failed错误。
修复方案
根据不同场景,可选择以下方式解决:
1. 临时关闭axios的SSL校验(仅开发环境使用)
开发阶段测试时,可让axios忽略证书验证,但生产环境绝对禁止使用,会带来严重安全风险:
import axios from 'axios'; import https from 'https'; // 创建带配置的axios实例 const axiosInstance = axios.create({ httpsAgent: new https.Agent({ rejectUnauthorized: false }) }); // 使用该实例发送请求 axiosInstance.post(path, { apiToken: loggedToken, pf: loggedpf }).then(function(response) { // 原逻辑代码 if(response.data.msg==1){ setprofilePic(response.data.profile[0]['Epic']) setisLoading(false); setdataSource(response.data.profile); } else if(response.data.msg==2){ showError(response.data.message); navigation.navigate('auth'); } else if(response.data.msg==0){ showError(response.data.message); } })
2. 配置信任自定义证书(生产环境推荐)
若服务器使用自签名证书,正确做法是将证书加入React Native项目的信任列表:
- 先导出服务器的PEM格式证书;
- Android端:将证书放入
android/app/src/main/res/raw目录,修改(或创建)network_security_config.xml,添加信任该证书的配置; - iOS端:把证书添加到Xcode项目,在
Info.plist中配置NSAppTransportSecurity规则,允许信任该证书。
3. 更换合法SSL证书(最优解)
正式项目建议使用权威CA机构颁发的合法SSL证书(比如Let's Encrypt的免费证书),彻底解决证书信任问题,同时保障请求安全。
补充说明
你当前的axios代码逻辑本身无问题,故障出在网络层的证书校验环节。另外也可确认移动端设备能否正常访问目标服务器网络(如是否在同一局域网、有无代理拦截等),但结合Postman的提示,证书问题是核心诱因。
内容的提问来源于stack exchange,提问作者Buddhika Athukorala
相关产品推荐
相关产品推荐

