React-Native v0.41仅HTTPS请求报错Network Request Failed求助
解决React Native 0.41中HTTPS请求报“Network Request Failed”的问题
这个问题我在RN 0.4x版本开发时踩过几乎一模一样的坑——HTTP请求正常、在线工具能通,但RN里HTTPS就报网络失败,结合你的错误栈(底层XMLHttpRequest报错),给你几个针对性的排查和解决方向:
1. 优先排查SSL证书兼容性问题
RN 0.41的网络底层(基于原生XMLHttpRequest)对SSL证书的兼容性很差,尤其是两种常见情况:
- 证书缺少中间证书链:在线API测试工具会自动补全中间链,但RN的原生网络层不会,直接导致证书验证失败
- 服务器启用了RN 0.41不支持的TLS协议:这个版本的RN底层仅支持到TLS 1.2,要是服务器强制启用TLS 1.3就会直接报错
解决办法:
- 让后端检查并配置完整的证书链(可以用SSL检测工具确认证书链完整性)
- 临时让后端降级TLS协议到1.2,验证是否能正常请求
2. 开发环境临时绕过SSL验证(仅开发用!)
如果是开发阶段急需调试,可以临时关闭RN的SSL证书验证,但绝对不能用于生产环境:
iOS端
可以用第三方库react-native-fetch-blob替代原生fetch,它支持忽略SSL错误:
// 用react-native-fetch-blob发送请求 RNFetchBlob.config({ trusty: true // 忽略SSL证书验证 }).fetch('GET', url + '/api/v2/login?' + param) .then(res => res.json()) .catch(err => console.log(err.message))
Android端
修改android/app/src/main/AndroidManifest.xml,同时自定义OkHttpClient添加信任所有证书的拦截器:
<!-- 在application标签内添加 --> android:usesCleartextTraffic="true"
核心是创建一个自定义OkHttpClient,添加信任所有证书的SSLSocketFactory,替换RN默认的网络客户端(具体代码可参考RN官方网络配置文档)
3. 长远解决方案:升级React Native版本
RN 0.41是2017年的老版本,网络层存在大量已知bug,后续的0.50+版本对HTTPS证书处理、TLS支持都做了大幅优化。虽然跨版本升级会有一定工作量,但从根本上解决这类遗留问题的话,升级是最优选择。
4. 检查设备系统时间
这个细节很容易被忽略:如果测试设备的系统时间和实际时间偏差过大(比如差几个月以上),会触发SSL证书的有效期验证失败,进而导致“Network Request Failed”。可以先把设备时间调回正确值再测试。
内容的提问来源于stack exchange,提问作者Ace
相关产品推荐
相关产品推荐

