如何在iPhone端React Native应用连接本地localhost的.NET Core API
解决React Native(Expo)连接本地.NET Core API的Network Request Failed问题
以下是针对你遇到问题的具体排查和解决步骤:
1. 确保.NET Core API监听所有网卡地址
默认情况下,本地运行的.NET Core API可能只绑定localhost,导致同一局域网内的手机无法访问。修改项目根目录下的Properties/launchSettings.json,找到applicationUrl字段,将其改为:
"applicationUrl": "http://0.0.0.0:51787;https://0.0.0.0:51787"
重启API服务,这样它就会监听电脑所有网卡的请求。
2. 检查电脑防火墙设置
Windows防火墙可能会拦截手机对51787端口的请求:
- 打开「Windows Defender防火墙」→「高级设置」→「入站规则」→「新建规则」
- 选择「端口」,输入
51787,允许连接,完成规则创建 - 或者暂时关闭防火墙进行测试(测试完成后记得重新开启)
3. 确认手机和电脑在同一WiFi网络
手机必须和运行API的电脑连接到同一个局域网WiFi,否则无法通过本地IP访问API。
4. 正确选择访问协议(HTTP/HTTPS)
- 如果API启用了HTTPS,iOS设备默认不信任.NET的自签名开发证书,会导致请求失败。你可以:
- 临时改用HTTP访问(修改API的launchSettings.json,只保留HTTP的applicationUrl,同时代码里用
http://192.168.1.69:51787) - 或者安装开发证书到iPhone:导出电脑上的.NET开发证书(在
%USERPROFILE%\.aspnet\https目录下),用邮件发送到iPhone,打开邮件安装证书,然后进入「设置」→「通用」→「关于本机」→「证书信任设置」,信任该证书。
- 临时改用HTTP访问(修改API的launchSettings.json,只保留HTTP的applicationUrl,同时代码里用
- 确保代码里的URL协议和API运行的协议一致,不要混用HTTP和HTTPS。
5. 验证CORS配置是否正确
即使你开启了CORS,也要确认配置是否生效:
- 对于.NET 6+,在
Program.cs中添加:
builder.Services.AddCors(options => { options.AddPolicy("AllowAll", policy => { policy.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader(); }); }); // 注意顺序:放在UseRouting之后,UseAuthorization之前 app.UseCors("AllowAll");
- 对于.NET 5及以前,在
Startup.cs的ConfigureServices和Configure方法中做同样配置。
6. 先验证API本身的可用性
在电脑浏览器中访问http://192.168.1.69:51787/api/Login(用你实际的本地IP),确认API能正常响应,排除API本身的错误。
7. 检查请求代码的细节
- 你的POST请求把参数放在URL里,虽然技术上可行,但更规范的做法是将参数放在请求体中(如果API接口是接收POST body的话):
const login = () => { fetch('http://192.168.1.69:51787/api/Login', { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({ username, password }) }) .then((response) => response.json()) .then((responseJson) => { // 处理逻辑 }) .catch((error) => { console.error(error); }); }
- 确认URL中的端口号、接口路径和API的实际路由完全一致,没有拼写错误。
内容的提问来源于stack exchange,提问作者Shazoo
相关产品推荐
相关产品推荐

