You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular Capacitor应用连接本地.NET Core 6.0 API遇连接超时问题

问题分析与解决方案

你遇到的net::ERR_CONNECTION_TIMED_OUT和CORS相关问题,主要是几个关键配置遗漏和环境问题导致的,下面逐一说明并给出解决办法:

一、当前遗漏的关键配置

1. CORS未包含Capacitor Android的请求Origin

Android端Capacitor发起的请求,Origin并不是你配置的http://localhost:xxx,而是capacitor://localhost(部分版本是http://localhost),你的CORS策略里没包含这个Origin,会被API拒绝。

修改CORS配置,添加Capacitor专属Origin:

builder.Services.AddCors(corsBuilder => corsBuilder.AddPolicy("AllowSpecific", corsBuilderObj =>
{
    corsBuilderObj.WithOrigins(
        "http://localhost:4200", 
        "http://localhost:4300", 
        "http://localhost:8100", 
        "http://localhost",
        "capacitor://localhost", // 新增Capacitor Android Origin
        "ionic://localhost" // 若用Ionic+Capacitor可补充
    )
    .AllowAnyMethod()
    .AllowAnyHeader();
}));

注意:别忘了在中间件管道中启用CORS,要放在app.UseRouting()之后、app.UseAuthorization()之前:

app.UseCors("AllowSpecific");

2. 电脑防火墙拦截了API端口

运行API的电脑防火墙可能阻止了局域网设备访问5103端口,需要手动开放:

  • Windows:打开「Windows Defender防火墙」→「高级设置」→「入站规则」→「新建规则」,选择「端口」,输入5103,允许连接,应用到所有网络类型。
  • Mac:打开「系统设置」→「网络」→「防火墙」→「选项」,添加你的.NET Core应用,或直接允许5103端口入站。

3. 设备与API不在同一局域网

确保你的Android设备和运行API的电脑连接的是同一个WiFi网络,否则局域网IP无法互通。

4. Angular应用未更新API地址

检查Angular代码中所有API请求的地址,是否仍硬编码为http://localhost:5103,需要替换为http://192.168.x.x:5103。

二、其他替代方案(开发环境推荐)

1. Capacitor代理配置

在capacitor.config.ts中配置代理,让Angular继续用/api路径请求,自动转发到局域网API,无需修改代码中的地址:

import { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
  appId: 'com.your.app.id',
  appName: 'YourAppName',
  webDir: 'dist/your-angular-app',
  server: {
    cleartext: true, // 开发环境允许HTTP请求(生产需改用HTTPS)
    proxy: {
      '/api': {
        target: 'http://192.168.x.x:5103',
        changeOrigin: true
      }
    }
  }
};

export default config;

配置后,Angular请求/api/users会自动转发到http://192.168.x.x:5103/api/users,CORS只需允许Angular dev server的http://localhost:4200即可。

2. ADB反向代理(USB连接设备时用)

如果Android设备通过USB连接电脑,可使用ADB命令将设备的端口映射到电脑的API端口:

adb reverse tcp:5103 tcp:5103

这样Android应用里请求http://localhost:5103会直接映射到电脑的5103端口,无需修改API地址,CORS配置也不用调整。

内容的提问来源于stack exchange,提问作者Hakuna Matata

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 12:03:29