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

Axios代理请求API报UNABLE_TO_VERIFY_LEAF_SIGNATURE错误求解

问题根因

报错UNABLE_TO_VERIFY_LEAF_SIGNATURE是Node.js发起HTTPS请求时无法验证目标站点SSL证书合法性导致的,你代码里配置的跳过证书校验规则没有生效,核心原因是传参错误:新版Axios要求HTTPS代理实例通过httpsAgent字段传入,直接写agent不会被识别,同时你的代码还存在依赖未引入、响应未透传给前端的问题。

修复方案

按以下步骤调整代码即可:

  • 补全缺失的express、cors、axios依赖引入,否则运行时会直接报变量未定义错误
  • 修正Axios的代理配置字段,把原来的agent改为httpsAgent,确保跳过证书校验的规则生效
  • 增加Node环境变量兜底配置,避免本地环境证书链缺失导致的校验失败(仅本地开发可用)
  • 补全响应逻辑,把API返回的结果透传给前端请求,不要只打印在服务端控制台
修正后可直接运行的代码
const express = require('express');
const cors = require('cors');
const axios = require('axios');
const https = require("https");

const app = express();
app.use(cors());

// 本地开发临时关闭SSL证书校验,生产环境禁止使用该配置
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';

const httpsAgent = new https.Agent({
  rejectUnauthorized: false,
});

// 替换为你自己申请的有效API密钥
const API_KEY = '请填入你的实际API_KEY';

app.get("/words", async (req, res) => {
  try {
    const apiRes = await axios.get(
      `https://krdict.korean.go.kr/api/search?certkey_no=4013&key=${API_KEY}&type_search=search&part=word&q=%EB%82%98%EB%AC%B4&sort=dict`,
      {
        httpsAgent,
        timeout: 10000
      }
    );
    res.status(200).send(apiRes.data);
  } catch (err) {
    console.error('代理请求失败:', err.message);
    res.status(500).send({ msg: '代理请求接口失败' });
  }
});

app.listen(3000, () => console.log('代理服务启动成功,监听端口3000'));
补充说明
  • 不要在生产环境关闭SSL证书校验,如果后续需要部署服务,可手动将目标API站点的完整证书链添加到Node.js的信任证书目录,即可在开启校验的情况下正常请求
  • 前端本地调试时,将词典接口的请求地址改为http://localhost:3000/words即可解决CORS跨域问题
  • 不要把API密钥写在前端代码中,所有携带密钥的请求都通过当前代理服务转发,避免密钥泄露

内容的提问来源于stack exchange,提问作者José Carlos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:36:20