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

Axios对接Django时响应拦截器无法获取响应状态的问题

Axios 401响应拦截器遇"Network Error"问题解决

问题场景

以下是用于处理401状态的Axios响应拦截器代码:

// Add a 401 response interceptor
window.axios.interceptors.response.use(function (response) {
    return response;
}, function (error) {
    if (401 === error.response.status) {
        // handle error: inform user, go to login, etc
    } else {
        return Promise.reject(error);
    }
});

实际运行时触发"Network Error",且无法获取任何响应详情。

问题原因

这是CORS跨域配置异常导致的:浏览器出于安全限制,当服务端CORS配置不符合规范时,会直接拦截跨域响应,Axios无法拿到包括401状态码在内的任何响应数据,只能抛出通用的"Network Error"。

解决方案

该问题必须从服务端调整CORS配置来解决,核心配置要点:

  • 正确设置Access-Control-Allow-Origin:如果前端请求携带凭证(如Cookie、HTTP认证信息),不能使用通配符*,需指定具体的前端域名
  • 配置Access-Control-Expose-Headers:若需要让前端获取自定义响应头,需在该字段中声明
  • 确保服务端在返回401等错误状态码时,能正常完成响应流程,不能直接中断请求,否则浏览器会判定为跨域异常

注意:前端的拦截器代码本身逻辑无问题,但由于CORS限制,代码根本无法进入判断error.response.status的分支,优先解决服务端CORS配置是关键。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 15:50:16