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

为何Express服务器仅支持浏览器HTTPS访问,Node.js脚本请求失败?

解决Node.js请求自签名证书HTTPS服务器失败的问题

这个坑我之前踩过!核心原因就是Node.js默认会严格校验SSL证书的合法性,而你的自签名证书不在系统信任的CA根证书列表里,所以脚本发起请求时直接触发了证书校验失败的错误。下面给你几个实用的解决办法,按需选择:

1. 临时禁用证书校验(仅开发环境用!)

如果只是临时测试,最快的方式就是关闭证书校验,但注意生产环境绝对不能这么做,会带来严重的安全风险。

用Node.js原生https模块的示例:

const https = require('https');

const options = {
  hostname: '你的服务器域名/IP',
  port: 443,
  path: '/你的GET路由',
  method: 'GET',
  rejectUnauthorized: false // 关键:禁用证书校验
};

const req = https.request(options, (res) => {
  res.on('data', (d) => {
    process.stdout.write(d);
  });
});

req.on('error', (e) => {
  console.error(e);
});
req.end();

如果用axios这类HTTP库,也可以在配置里加同样的参数:

const axios = require('axios');

axios.get('https://你的服务器域名/你的路由', {
  httpsAgent: new https.Agent({ rejectUnauthorized: false })
})
.then(res => console.log(res.data))
.catch(err => console.error(err));

2. 将自签名证书加入Node.js信任列表(推荐开发环境长期用)

这个方法更安全,能让Node.js永久信任你的自签名证书(仅对当前环境生效)。

步骤如下:

  • 找到你的自签名证书文件(比如server-cert.pem)
  • 设置环境变量NODE_EXTRA_CA_CERTS指向这个证书:
    # Linux/macOS终端
    export NODE_EXTRA_CA_CERTS=/path/to/your/server-cert.pem
    
    # Windows CMD
    set NODE_EXTRA_CA_CERTS=C:\path\to\your\server-cert.pem
    
    # Windows PowerShell
    $env:NODE_EXTRA_CA_CERTS = "C:\path\to\your\server-cert.pem"
    
  • 重启你的Node.js请求脚本,之后它就会自动信任这个证书了。

3. 请求时直接指定信任的证书(灵活可控)

如果不想修改环境变量,也可以在单个请求的配置里直接传入证书,只对当前请求生效:

const https = require('https');
const fs = require('fs');

const options = {
  hostname: '你的服务器域名/IP',
  port: 443,
  path: '/你的GET路由',
  method: 'GET',
  ca: fs.readFileSync('/path/to/your/server-cert.pem') // 直接指定信任的证书
};

const req = https.request(options, (res) => {
  // 处理响应逻辑
});

req.on('error', (e) => {
  console.error(e);
});
req.end();

补充说明

为什么浏览器能正常访问?因为你第一次打开时手动点击了“信任此证书”,浏览器会把这个自签名证书加入本地信任列表;但Node.js不会自动做这个操作,必须手动配置信任规则才行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:03:28