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

使用create-react-app+axios发起HTTPS请求遇CERT_HAS_EXPIRED错误求助

解决 create-react-app + Axios 中的 CERT_HAS_EXPIRED 错误

嘿,我之前在开发 React 项目时也碰到过一模一样的问题,结合你已经配置代理但仍报错的情况,给你几个针对性的排查和解决方向:

1. 先确认后端服务器的证书状态

先别着急改代码,直接在浏览器里访问你代理指向的后端 API 地址。如果浏览器弹出证书过期的警告,那问题根源就在后端服务器的 SSL 证书已经失效了——这种情况下,最根本的解决办法是让后端团队更新证书,毕竟证书过期本身就是安全隐患,不管开发还是生产环境都得处理。

2. 开发环境临时绕过 SSL 验证(仅用于开发!)

如果是开发阶段后端暂时没法更新证书,你可以通过两种方式临时禁用 SSL 验证:

方式一:给 Axios 全局配置

在你初始化 Axios 的地方(比如单独的 axios.js 文件或者项目入口文件),添加以下配置:

import axios from 'axios';
import https from 'https';

// 仅开发环境启用,生产环境务必删除!
if (process.env.NODE_ENV === 'development') {
  axios.defaults.httpsAgent = new https.Agent({
    rejectUnauthorized: false
  });
}

方式二:自定义代理配置(替代 package.json 的 proxy 字段)

如果你的代理需求比较复杂,推荐用 setupProxy.js 来配置,这样可以直接在代理层面禁用 SSL 验证:

  1. 先安装依赖:npm install http-proxy-middleware --save-dev
  2. 在项目的 src 目录下创建 setupProxy.js 文件,写入:
const { createProxyMiddleware } = require('http-proxy-middleware');

module.exports = function(app) {
  app.use(
    '/api', // 你的 API 请求前缀
    createProxyMiddleware({
      target: 'https://your-backend-domain.com', // 替换成你的后端地址
      changeOrigin: true,
      secure: false, // 禁用 SSL 证书验证,仅开发环境使用
    })
  );
};

注意:记得删除 package.json 里的 proxy 字段,避免配置冲突。

3. 排查本地 CA 证书问题

如果后端证书是有效的,但你本地还是报错,可能是你系统的根 CA 证书过期了。这种情况可以尝试更新本地的 CA 证书库:

  • Windows:通过系统设置的「证书管理器」更新根证书
  • macOS:打开「钥匙串访问」,找到过期的根证书并更新
  • Linux:根据发行版不同,更新 ca-certificates 包(比如 Ubuntu 用 sudo apt update && sudo apt install --reinstall ca-certificates)

⚠️ 重要提醒:禁用 SSL 验证只是开发环境的临时 workaround,生产环境绝对不能这么做,否则会导致你的应用面临严重的安全风险!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:18:57