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

Axios请求返回401时无法获取后端自定义错误信息该如何解决?

问题原因
  • 后端路由存在隐性逻辑缺陷:if(req.user)分支执行res.json()后没有加return终止函数执行,无论用户是否通过认证,后续的401响应代码都会尝试执行,属于会引发异常的隐性bug。
  • Axios错误对象封装规则:你自定义的后端响应内容不会直接挂载在error根对象上,直接打印error只会输出Axios默认的通用错误提示,业务自定义内容存放在error.response属性下。
解决方法

1. 修复后端路由代码

在返回用户信息的分支加return,避免重复发送响应:

router.get("/get-authenticated-user", (req, res) => {
  if (req.user) {
    return res.json({ user: req.user });
  }
  res.status(401).json({ err: "Not authenticated" });
});

2. 调整前端错误捕获逻辑

从error.response.data中读取后端返回的自定义错误信息:

<script>
  axios
    .get("http://localhost:5000/get-authenticated-user")
    .then(function (response) {
      // 处理成功响应
      console.log(response);
    })
    .catch(function (error) {
      // 存在响应的情况(后端返回了状态码)
      if (error.response) {
        // 输出自定义错误信息
        console.log(error.response.data.err);
        // 可按需获取状态码、响应头信息
        console.log(error.response.status, error.response.headers);
      } else {
        // 网络异常、请求未发出等无响应的情况
        console.log(error.message);
      }
    });
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:24:05