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

Node.js发起API请求如何加载SSL证书?现有实现返回400错误如何解决

问题原因

node-fetch以及Node内置的原生fetch都不支持直接在根配置项传入cert、key参数,需要先将证书、密钥配置到自定义的HTTPS Agent中,再将Agent传入请求配置。

正确实现代码

import fs from 'node:fs'
// 若使用Node 18+内置原生fetch,可删除下面这行node-fetch的引入
import fetch from 'node-fetch'
import https from 'node:https'

const httpsAgent = new https.Agent({
  cert: fs.readFileSync("/tmp/certs/ct.crt", 'utf-8'),
  key: fs.readFileSync("/tmp/certs/ct.key", 'utf-8'),
  // 若第三方使用自签名证书,可取消注释下方配置,正规CA签发证书无需配置
  // rejectUnauthorized: false,
  // 若证书设置了密码,补充下方配置填写证书密码
  // passphrase: "YOUR_CERT_PASSPHRASE"
})

const requestOptions = {
  method: 'GET',
  agent: httpsAgent
};

const res = await fetch("https://url.com?unique_ID=1234&key=abcd", requestOptions);
// 如仍有报错,可打印响应文本查看服务端返回的具体错误信息
// console.log(await res.text())

额外排查建议

如果调整后仍返回400错误,可优先检查以下项:

  • 对比Insomnia中的请求头,确认是否遗漏了Accept、Content-Type等服务端要求的必填头字段
  • 确认URL参数的编码格式和Insomnia完全一致,特殊字符没有被意外转义或漏转义
  • 检查证书文件是否完整,读取到的内容和Insomnia中导入的证书完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 17:15:04