Node.js中如何忽略HTTPS请求SSL证书验证?含node-fetch、Axios问询
如何在Node.js中跳过HTTPS请求的SSL对等验证
当然有合适的工具包能实现你要的功能,而且Axios完全支持跳过SSL验证!下面给你逐个说明常用方案:
1. 使用Axios实现跳过SSL验证
Axios可以通过配置自定义的HTTPS Agent关闭SSL对等验证,效果和curl里的CURLOPT_SSL_VERIFYPEER => false、CURLOPT_SSL_VERIFYHOST => false完全一致。具体代码如下:
const axios = require('axios'); const https = require('https'); // 创建禁用SSL验证的Agent const httpsAgent = new https.Agent({ rejectUnauthorized: false // 这个选项同时关闭了对等证书验证和主机名验证 }); // 发起请求时指定该Agent axios.get('https://your-insecure-domain.com/api', { httpsAgent: httpsAgent }) .then(response => { console.log(response.data); }) .catch(error => { console.error(error); });
如果需要全局生效,也可以直接创建配置好的Axios实例:
const axiosInstance = axios.create({ httpsAgent: new https.Agent({ rejectUnauthorized: false }) }); // 后续用这个实例发起的所有请求都会自动跳过SSL验证 axiosInstance.get('https://your-insecure-domain.com/api');
2. node-fetch其实也能实现!
你之前以为node-fetch不支持这个功能,但实际上它同样可以通过传入agent选项来实现。代码示例:
const fetch = require('node-fetch'); const https = require('https'); const httpsAgent = new https.Agent({ rejectUnauthorized: false }); fetch('https://your-insecure-domain.com/api', { agent: httpsAgent }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));
3. 其他可选包:request(虽停更但仍可使用)
虽然request包已经停止新功能开发,但很多旧项目还在使用,它的配置更直接:
const request = require('request'); request({ url: 'https://your-insecure-domain.com/api', rejectUnauthorized: false // 直接设置该选项即可 }, (error, response, body) => { if (!error && response.statusCode === 200) { console.log(body); } });
⚠️ 重要提醒:跳过SSL验证会让你的请求失去加密通信的安全性,容易遭受中间人攻击。这个操作只适合测试环境、内部可信服务场景,绝对不要在生产环境中使用!
内容的提问来源于stack exchange,提问作者Dmitry Samoylov
相关产品推荐
相关产品推荐

