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

Next.js访问ASP.NET Core API报500错误:无法验证第一份证书求助

问题解答

问题本质

你遇到的unable to verify the first certificate报错和IIS Express权限无关,核心原因是:

  • Next.js的getStaticProps运行在服务端Node.js环境,不会复用浏览器的信任证书列表
  • IIS Express本地开发默认使用自签名SSL证书,Node.js默认不信任未经过正规CA签发的证书
  • Postman会默认信任本地自签证书、jsonplaceholder的证书由正规CA签发,所以这两个场景访问正常

解决方案

方案1:本地开发临时禁用证书校验(仅本地使用,生产环境严禁使用)

直接在fetch请求中配置跳过TLS证书校验,修改你的getStaticProps代码即可:

import https from 'https'

export const getStaticProps = async () => {
    // 配置跳过证书校验的Agent
    const httpsAgent = new https.Agent({
        rejectUnauthorized: false
    })
    const res = await fetch(`https://localhost:44310/api/movies`, {
        agent: httpsAgent
    })
    const data = await res.json()

    return {
        props: {movies:data}
    }
}

也可以通过启动环境变量全局配置,修改package.json中的启动脚本:

  • Windows系统:"dev": "set NODE_TLS_REJECT_UNAUTHORIZED=0 && next dev"
  • Mac/Linux系统:"dev": "NODE_TLS_REJECT_UNAUTHORIZED=0 next dev"

方案2:长期本地开发正规方案

将IIS Express的自签证书加入信任列表,避免每次跳过校验:

  1. 用Chrome访问你的本地API地址https://localhost:44310,点击地址栏的锁图标,选择「证书」->「详细信息」->「复制到文件」,导出为Base64编码的X.509(.CER)格式证书
  2. 启动Next.js时添加环境变量NODE_EXTRA_CA_CERTS=你的证书文件路径即可生效

额外代码优化提示

你当前代码中定义的myHeaders、requestOptions、raw变量没有被实际使用,且GET请求不需要携带body参数,这些冗余代码可以直接删除。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:54:00