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

Expo版React Native调用.NET Core API遇证书信任锚缺失问题求助

解决Expo React Native安卓模拟器调用自签名证书.NET Core API的证书信任问题

方案一:通过app.json结合Expo Config Plugin配置网络安全规则

Expo虽然不能直接修改AndroidManifest,但可以通过Config Plugin间接关联你创建的network_security_config.xml,无需 eject 项目。

步骤1:安装必要插件

安装expo-build-properties插件用于修改安卓构建配置:

npx expo install expo-build-properties

步骤2:在app.json中关联网络安全文件

修改app.json的expo.plugins字段,指定网络安全配置文件路径:

{
  "expo": {
    "plugins": [
      [
        "expo-build-properties",
        {
          "android": {
            "networkSecurityConfig": "./res/xml/network_security_config.xml"
          }
        }
      ]
    ]
  }
}

确保network_security_config.xml配置了信任自签名证书,示例内容:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
        <trust-anchors>
            <certificates src="@raw/your_certificate_file"/>
        </trust-anchors>
    </domain-config>
</network-security-config>

步骤3:调整证书文件位置

将证书文件移动到Expo项目的android/app/src/main/res/raw目录(目录不存在则手动创建),确保构建时能被正确识别。

方案二:使用Expo Dev Client(推荐开发/测试环境)

如果使用Expo Dev Client,可在构建自定义开发客户端时集成证书信任配置:

  1. 按方案一完成app.json和网络安全文件配置
  2. 运行npx expo prebuild生成安卓原生项目文件
  3. 构建并安装自定义Dev Client到模拟器:npx expo run:android

方案三:开发环境临时绕过证书验证(仅开发用,禁止生产)

若只是开发阶段快速测试,可修改Axios配置禁用证书验证:

import axios from 'axios';
const https = require('https');

const axiosInstance = axios.create({
  httpsAgent: new https.Agent({
    rejectUnauthorized: false
  })
});

⚠️ 注意:此方法跳过所有证书验证,存在严重安全风险,绝对不能用于生产环境。

方案四:将证书打包到Expo资产中

把证书文件放到项目assets目录,在app.json中声明资产:

{
  "expo": {
    "assets": ["./assets/your_certificate.crt"]
  }
}

再通过Config Plugin将证书复制到安卓原生res/raw目录,关联到网络安全配置即可。


内容的提问来源于stack exchange,提问作者Chouinard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:30:53