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

Next.js getServerSideProps设置rejectUnauthorized仍报SSL证书错误如何解决

方案1:开发环境快速全局禁用TLS验证(仅建议本地开发用,严禁生产环境使用)

你之前的配置不生效是因为 rejectUnauthorized 是axios、旧版node-fetch的专属参数,Node 18+ 内置的标准fetch API不识别该配置项。
最快的解决方式是在启动Next.js时添加Node环境变量,直接全局关闭TLS证书校验:
修改项目package.json中的开发启动脚本:

{
  "scripts": {
    "dev": "NODE_TLS_REJECT_UNAUTHORIZED=0 next dev"
  }
}

Windows环境如果用cmd/powershell,需要对应调整环境变量设置方式,可安装cross-env实现跨平台兼容:
先安装cross-env:

npm i cross-env -D

再修改脚本:

{
  "scripts": {
    "dev": "cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 next dev"
  }
}

方案2:单请求关闭验证(无需全局修改)

如果不想全局关闭证书校验,可以给单个fetch请求配置undici的Agent(Node内置fetch底层基于undici实现):
首先安装undici依赖:

npm i undici

修改你的getServerSideProps代码:

import { Agent } from 'undici'

export async function getServerSideProps() {
  const res = await fetch('https://nginx/api/items', {
    method: 'GET',
    dispatcher: new Agent({
      connect: {
        rejectUnauthorized: false
      }
    })
  })

  const { data } = await res.json()
  return { props: { data } }
}

方案3:添加自签名证书到信任列表(最安全的开发环境方案)

如果不想关闭校验,可以把你的自签名证书文件加入Node的信任CA列表,启动时添加对应环境变量即可:

{
  "scripts": {
    "dev": "NODE_EXTRA_CA_CERTS=./你的自签名证书路径.crt next dev"
  }
}

该方案不会降低环境安全性,同时可以正常使用自签名证书。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:36:03