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

Angular SSR运行时出现Http failure response错误的原因与解决咨询

Angular Universal本地开发自签名证书错误问题解析

错误本质与是否正常

这个错误不属于正常现象,核心原因是Angular Universal的服务端渲染(SSR)进程在请求本地HTTPS接口时,Node.js默认严格验证SSL证书合法性,而你的接口使用的是自签名证书,不被信任,因此抛出DEPTH_ZERO_SELF_SIGNED_CERT错误。

网站能正常运行是因为SSR请求失败后,Angular会自动降级到客户端渲染(CSR)——浏览器在本地开发时对自签名证书的限制更宽松(你可能已手动在浏览器信任了该证书),客户端发起的请求能成功,但SSR的首屏加载速度、SEO优化等优势会失效。

修正/规避方法

方法1:临时禁用Node.js SSL证书验证(仅开发环境)

在Angular Universal的服务端入口文件(通常为server.ts)最顶部添加代码,仅在开发环境忽略证书验证:

// 仅开发环境使用,生产环境禁止添加
if (process.env.NODE_ENV === 'development') {
  process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
}

方法2:将自签名证书加入系统信任列表

把你的自签名证书(如localhost.crt)导入系统根证书存储:

  • Windows系统运行命令:
certutil -addstore -f "ROOT" localhost.crt
  • Linux/macOS系统可将证书放入系统信任根目录(具体路径根据系统调整),完成后Node.js会自动信任该证书。

方法3:开发环境改用HTTP接口

如果开发阶段不需要HTTPS,直接将API请求地址改为http://localhost:44372/...,彻底避开SSL证书验证环节。

方法4:配置Angular代理转发

通过代理配置转发API请求,同时跳过证书验证:

  1. 创建proxy.conf.json文件:
{
  "/api": {
    "target": "https://localhost:44372",
    "secure": false,
    "changeOrigin": true
  }
}
  1. 在angular.json的serve配置中引入代理:
"serve": {
  "builder": "@angular-devkit/build-angular:application",
  "options": {
    "proxyConfig": "proxy.conf.json",
    // 其他原有配置
  }
}
  1. 将API请求改为相对路径(如/api/Article/ArquivesArticlesAnoMes),代理会自动转发到目标HTTPS接口并跳过证书验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 01:46:07