Node.js 20原生全局fetch函数如何忽略无效SSL证书?
Node.js 20 内置全局fetch忽略无效SSL证书的方法
Node.js 20的内置全局fetch基于undici实现,原生Web标准的fetch API本身没有直接提供忽略SSL证书的配置项,但可以通过以下几种方式实现需求:
1. 全局禁用TLS证书检查(开发环境适用)
命令行参数启动
启动Node.js脚本时添加--no-tls-check参数,全局忽略所有SSL证书验证:
node --no-tls-check your-script.js
环境变量设置
通过设置NODE_TLS_REJECT_UNAUTHORIZED=0全局禁用证书校验:
- Windows:
set NODE_TLS_REJECT_UNAUTHORIZED=0 && node your-script.js - Linux/macOS:
NODE_TLS_REJECT_UNAUTHORIZED=0 node your-script.js
2. 针对单个fetch请求忽略证书(精准控制)
利用undici的Agent配置,给特定fetch请求指定自定义dispatcher,实现单请求的证书忽略:
ES模块(ESM)写法
import { Agent } from 'undici'; // 创建禁用证书校验的Agent const insecureAgent = new Agent({ connect: { rejectUnauthorized: false } }); // 发起请求时传入dispatcher参数 const response = await fetch('https://your-invalid-ssl-domain.com', { dispatcher: insecureAgent }); // 使用后记得销毁Agent释放资源 insecureAgent.destroy();
CommonJS写法
const { Agent } = require('undici'); const insecureAgent = new Agent({ connect: { rejectUnauthorized: false } }); const response = await fetch('https://your-invalid-ssl-domain.com', { dispatcher: insecureAgent }); insecureAgent.destroy();
注意:以上忽略SSL证书的操作仅建议在开发、测试环境使用,生产环境禁用证书校验会带来严重的安全风险。
内容的提问来源于stack exchange,提问作者u936293
相关产品推荐
相关产品推荐

