React Native Expo调用ASP.NET API遇Axios网络错误求助
问题解决:React Native Expo调用本地ASP.NET API出现证书验证错误
核心问题分析
React Native Expo应用请求本地ASP.NET API时触发「Network error」,但Web端调用正常。从错误日志中可提取关键信息:
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
翻译为:Java证书路径验证异常:未找到证书路径的信任锚点
原因是本地ASP.NET API使用的是自签名HTTPS证书,React Native(Android/iOS)默认不认可这类非CA颁发的证书,而Web浏览器支持手动信任,所以Web端无问题。
解决方案
方案1:开发环境临时禁用SSL验证
通过自定义Axios实例跳过证书验证,快速解决开发阶段的测试问题:
import axios from 'axios'; import https from 'https'; // 创建跳过SSL验证的Axios实例 const devAxios = axios.create({ httpsAgent: new https.Agent({ rejectUnauthorized: false }) }); useEffect(() => { devAxios({ method: "GET", url: "https://192.168.1.100:7089/api/IngredientTypes", headers: { "Content-Type": "application/json", Accept: "application/json", } // GET请求无需data参数,建议移除 }) .then(response => console.log(response.data)) .catch(error => { if (error.response) { console.log(error.response.status); } else if (error.request) { console.log(error.request); } else { console.log(error.message); } }); }, []);
⚠️ 此方法严禁用于生产环境,会引发安全风险。
方案2:添加自签名证书到信任列表(推荐开发/测试环境)
- 导出ASP.NET API的自签名证书为
.cer格式 - Android端:将证书放入
android/app/src/main/res/raw目录,在network_security_config.xml中配置信任该证书 - iOS端:在Xcode中将证书添加到项目,修改
Info.plist配置ATS信任规则
方案3:切换为HTTP协议(开发环境)
修改ASP.NET API配置启用HTTP协议,将请求URL改为http://192.168.1.100:5089/api/IngredientTypes(对应API的HTTP端口),同时确保API允许HTTP请求。
方案4:使用可信CA证书(生产环境)
生产环境必须使用受信任的CA颁发的SSL证书(如Let's Encrypt免费证书),所有平台会自动信任这类证书。
额外优化建议
- 移除GET请求中的
data参数,该参数仅用于POST/PUT等请求 - 确认设备与API服务器在同一局域网,且请求URL中的IP地址正确(日志中出现多个不同IP,需统一为服务器实际IP)
内容的提问来源于stack exchange,提问作者oli
相关产品推荐
相关产品推荐

