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,可在构建自定义开发客户端时集成证书信任配置:
- 按方案一完成app.json和网络安全文件配置
- 运行
npx expo prebuild生成安卓原生项目文件 - 构建并安装自定义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
相关产品推荐
相关产品推荐

