React Native(Expo iOS)调用.NET Core 7 API报Network request failed错误
Expo iOS React Native 调用.NET Core 7 API 报 Network request failed 问题解决
问题描述
开发了基于Expo的iOS端React Native应用,后端采用.NET Core 7 API。使用fetch或axios发送POST请求时,始终返回TypeError: Network request failed。尝试用局域网IP替换localhost后问题依旧,但API在Postman和Swagger中可正常响应。
请求代码:
fetch("https://localhost:7199/api/Auth/SendVerificationMessage", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ phoneNumber: "+40000000000", verificationCode: 0, }), }) .then((response) => { console.log("yay" + response.status); }) .catch((error) => { console.log("meh " + error); });
已修改Info.plist:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
解决方案
处理HTTPS证书信任问题
本地.NET Core生成的自签名证书默认不被iOS信任,这是核心问题之一:- 临时切换HTTP调试:修改.NET Core项目的
launchSettings.json,启用HTTP端口(通常为5xxx开头),将请求地址替换为http://你的局域网IP:端口/api/... - 安装证书到iOS设备:导出本地HTTPS证书,通过邮件/隔空投送发送到iOS设备并安装,之后在「设置-通用-关于本机-证书信任设置」中启用该证书
- 临时切换HTTP调试:修改.NET Core项目的
确保网络连通性
- iOS设备(模拟器/真机)必须和后端服务器处于同一局域网
- 用设备自带浏览器访问
http://你的局域网IP:端口/swagger,确认能正常打开,排除防火墙拦截或端口未开放问题 - 禁止使用
localhost:Expo模拟器中的localhost指向模拟器自身,必须替换为电脑的局域网IP(如192.168.1.100)
Expo环境下ATS配置生效方式
直接修改Info.plist在Expo托管项目中不会生效,需在app.json或app.config.js中配置:{ "expo": { "ios": { "infoPlist": { "NSAppTransportSecurity": { "NSAllowsArbitraryLoads": true } } } } }修改后重启Expo服务,重新构建iOS项目
抓包排查请求细节
使用Charles抓包工具查看请求是否真正发出,以及具体的错误信息(iOS模拟器需配置代理指向Charles)
内容的提问来源于stack exchange,提问作者dragosh46
相关产品推荐
相关产品推荐

