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

如何为Node.js全局fetch提供HTTPS Agent或CA证书?

Node 18内置fetch设置TLS选项的原生方案说明

核心结论

Node 18内置的全局fetch遵循浏览器API规范,没有原生的直接方式来单独为其设置TLS选项(如自定义CA证书)。

可行方案

1. 使用undici Agent(需手动安装依赖)

Node.js的内置fetch基于undici实现,虽然undici未随Node.js默认分发,但可以手动安装后通过其Agent配置TLS选项,再作为dispatcher传入fetch:

  • 第一步:安装undici
npm install undici
  • 第二步:配置Agent并使用fetch
import { Agent } from 'undici';
import fs from 'fs';

// 配置包含TLS选项的Agent
const customAgent = new Agent({
  connect: {
    ca: fs.readFileSync('./custom-root-ca.pem'), // 加载自定义CA证书
    rejectUnauthorized: true // 可选:控制是否验证服务器证书
  }
});

// 传入dispatcher使用配置好的Agent
const response = await fetch('https://example.com', {
  dispatcher: customAgent
});

2. 通过Node.js全局TLS配置(无需额外依赖)

如果不需要单独为fetch配置,而是希望全局生效,可以使用Node.js的环境变量NODE_EXTRA_CA_CERTS来指定额外的CA证书,该配置会对所有Node.js HTTP客户端(包括内置fetch)生效:

# 运行脚本时设置环境变量
NODE_EXTRA_CA_CERTS=./custom-root-ca.pem node your-app.js

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 01:52:35