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

Angular CLI代理HTTPS协议的.NET Core API失败问题求助

解决Angular代理HTTPS .NET Core API的EPROTO错误

你的问题核心在于开发环境下.NET Core生成的自签名HTTPS证书不被Angular代理信任,哪怕设置了secure: true也没用——这个参数只是控制是否验证证书有效性,但自签名证书本身不在系统信任列表里。结合你的报错信息,下面是一步步的解决方案:

1. 修正代理配置文件

先把你的proxy.conf.json调整成下面这样,几个关键参数必须配置:

{
  "/api": {
    "target": "https://localhost:5000",
    "secure": false,
    "changeOrigin": true,
    "rejectUnauthorized": false
  }
}

这里解释下每个参数的作用:

  • target要改成https://:你之前写的http://是错误的,毕竟你的API是HTTPS服务,这是问题根源之一!
  • secure: false:告诉代理不要校验目标服务器证书的有效性(毕竟是开发用的自签名证书)
  • changeOrigin: true:解决跨域时主机头不匹配的问题,.NET Core API通常会校验请求的主机头
  • rejectUnauthorized: false:绕开Node.js对自签名证书的默认拒绝逻辑,这是解决EPROTO错误的关键

2. 确保Angular用正确的代理启动

启动ng serve时必须指定代理配置文件,直接运行这条命令:

ng serve --proxy-config proxy.conf.json

如果习惯用npm脚本启动,可以在angular.json的启动配置里加上代理参数:

"scripts": {
  "start": "ng serve --proxy-config proxy.conf.json"
}

之后直接运行npm start就能自动加载代理配置了。

3. 可选:信任.NET Core开发证书(更彻底的方案)

如果不想每次都靠代理绕开证书验证,可以把.NET Core的自签名证书添加到系统信任列表里:

  • 打开管理员权限的命令行,运行:
dotnet dev-certs https --trust

执行后会弹出证书信任确认窗口,点击信任即可。这样之后代理配置里把secure设为true也能正常工作,而且浏览器直接访问API时也不会弹出证书警告了。

最后排查下常见坑

  • 确认API确实在https://localhost:5000运行,而不是HTTP协议
  • 检查5000和4200端口是否被其他程序占用
  • 如果还是报错,试试清除Angular缓存:ng cache clean,然后重启服务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:54:40