You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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:添加自签名证书到信任列表(推荐开发/测试环境)

  1. 导出ASP.NET API的自签名证书为.cer格式
  2. Android端:将证书放入android/app/src/main/res/raw目录,在network_security_config.xml中配置信任该证书
  3. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 12:26:26