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

Nuxt.js搭配Axios直接打开首页报证书过期,路由跳转访问正常如何解决?

问题分析与修复方案

访问结果差异的核心逻辑

  • 直接访问首页、普通<a>标签跳转首页:两种场景均触发Nuxt服务端渲染(SSR)流程,首页依赖的推特信息流数据由服务端Node进程主动请求https://example.org:5000/tweets接口获取,错误在服务端请求阶段触发
  • 带nuxt-link-active类的链接是Nuxt内置nuxt-link组件渲染生成,点击时走客户端路由跳转逻辑,仅在用户浏览器侧完成页面渲染,推特接口请求由浏览器发起,不会触发服务端逻辑,因此无报错

证书过期报错的根因

浏览器直接访问example.org:5000/tweets正常,仅服务端Node请求报错,本质是Node服务端的根证书信任库与浏览器的信任库不同步:
从报错日志判断,服务端运行的是老旧的Node 8.x版本,近期Let's Encrypt旧根证书DST Root CA X3过期后,旧版Node的根证书信任库仍优先校验该过期证书,直接抛出CERT_HAS_EXPIRED错误;而现代浏览器早已移除该过期根证书,会正常校验Let's Encrypt新的ISRG Root X1根证书,因此浏览器访问接口无异常。
该问题无代码变更也会突发,完全是证书信任链过期导致的。

修复方案

临时应急方案

修改服务端Axios请求配置,添加rejectUnauthorized: false关闭证书校验,快速恢复业务:

const https = require('https')
const axios = require('axios').create({
  baseURL: 'https://example.org:5000/',
  httpsAgent: new https.Agent({
    rejectUnauthorized: false
  })
})

注意:该方案存在安全风险,仅适合临时救急,不可长期在线上环境使用

长期稳定方案

  1. 升级服务端Node版本至12.x及以上LTS版本,新版Node已移除过期的DST Root CA X3根证书,默认信任ISRG Root X1根证书
  2. 重新为5000端口服务签发HTTPS证书,调整证书信任链优先适配新的ISRG Root X1根证书
  3. 也可将服务端内部接口调用改为内网HTTP地址,绕开HTTPS证书校验逻辑,性能也更优

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:54:04