React Native调用本地IIS接口报"Network request failed"问题求助
本地IIS API React Native Android访问证书问题解决方案
证书选择:优先使用mkcert
IIS自带的自签名证书兼容性极差,React Native的OkHttp网络栈会严格校验证书链,即便手动将证书安装到设备,也大概率不被App信任。mkcert生成的证书基于本地信任根,能被Android系统和React Native网络层自动认可,无需在设备上单独手动安装,可靠性远高于IIS自签名证书。
mkcert针对IP访问的生成步骤
- 先完成mkcert初始化,安装本地信任根:
mkcert -install - 生成包含局域网服务器IP的证书(替换成你的服务器实际IP,可同时添加localhost、127.0.0.1作为备用):
mkcert 192.168.1.100 localhost 127.0.0.1 - 导出IIS可用的PFX格式证书(设置自定义密码,后续IIS配置时需要输入):
mkcert -pkcs12 192.168.1.100.pfx 192.168.1.100 - 在IIS中绑定此PFX证书到你的API站点,确保端口(默认443)与IP绑定配置正确。
Android端配置
1. 修改AndroidManifest.xml
在<application>标签中添加android:networkSecurityConfig属性:
<application ... android:networkSecurityConfig="@xml/network_security_config">
2. 创建network_security_config.xml文件
在android/app/src/main/res/xml目录下新建该文件,配置内容如下:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="false"> <!-- 替换成你的服务器局域网IP --> <domain includeSubdomains="true">192.168.1.100</domain> <!-- 信任系统及用户安装的证书,确保mkcert根证书被识别 --> <trust-anchors> <certificates src="system" /> <certificates src="user" /> </trust-anchors> </domain-config> <!-- Debug模式下额外信任用户证书(可选) --> <debug-overrides> <trust-anchors> <certificates src="user" /> </trust-anchors> </debug-overrides> </network-security-config>
cleartextTrafficPermitted="false"强制走HTTPS,符合生产环境规范。- 若使用真机测试,需将mkcert生成的根证书(通过
mkcert -CAROOT命令可找到路径)安装到真机的系统证书目录(部分Android版本不认可用户目录下的证书)。
3. 验证要点
确保React Native的API请求URL以HTTPS开头,例如https://192.168.1.100/api/test。
内容的提问来源于stack exchange,提问作者Lazeeee
相关产品推荐
相关产品推荐

