React Native Expo调用ASP.NET Core API桌面正常移动端失败求助
React Native Expo 调用 ASP.NET Core API 网络错误解决方案
问题概述
使用React Native Expo开发的移动端应用,调用ASP.NET Core 8 Web API时抛出Registration failed: Network Error错误。桌面端Postman通过IPv4地址调用API完全正常,且移动端能ping通该IPv4,但移动端Postman Web调用时出现:
Cloud Agent Error: Can not send requests to reserved address. Make sure address is publicly accessible or select a different agent.
已尝试移除后端UseHttpsRedirection()、配置宽松CORS策略,但问题仍未解决。
核心问题及修复步骤
1. 协议不匹配(最关键原因)
后端当前仅监听HTTP端口7009(未配置HTTPS),但前端请求使用了https://前缀,导致请求无法建立连接。
修改前端请求URL:
将sign-up.jsx中的请求地址从https://改为http://:
const response = await axios.post( "http://你的IPv4地址:7009/api/user/register", registrationData );
2. Expo 网络权限配置
- Android:确保
app.json中添加网络权限:{ "expo": { "android": { "permissions": ["INTERNET"] } } } - iOS:iOS 14+ 默认拦截非HTTPS请求,需在
app.json中配置允许HTTP请求(仅开发环境使用,生产环境建议启用HTTPS):{ "expo": { "ios": { "infoPlist": { "NSAppTransportSecurity": { "NSAllowsArbitraryLoads": true } } } } }
3. 后端防火墙与端口验证
确认后端机器的7009端口已在防火墙中开放,允许局域网内设备访问。可通过移动端工具执行telnet 你的IPv4地址 7009验证端口连通性。
4. 移动端Postman 代理切换
移动端Postman的Cloud Agent无法访问局域网内部IP,需切换到Local Agent(确保移动端与后端处于同一局域网),即可正常调用API。
后端代码验证(无需修改)
你的Program.cs配置已满足基础要求:
- CORS策略
AllowAnyOrigin()/AllowAnyHeader()/AllowAnyMethod()已覆盖跨域需求 - Kestrel监听
IPAddress.Any, 7009确保局域网设备可访问 - 已注释
UseHttpsRedirection()避免HTTPS强制跳转
内容的提问来源于stack exchange,提问作者Izabela Marinova
相关产品推荐
相关产品推荐

