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

如何为axios配置添加自定义属性?自定义_retry属性始终undefined触发死循环如何解决

需求背景

需要通过axios响应拦截器实现token过期自动刷新功能,为此通过模块声明为AxiosRequestConfig扩展了自定义属性_retry,用于避免刷新逻辑死循环,实现代码如下:

declare module "axios" {
  export interface AxiosRequestConfig {
    _retry?: boolean;
  }
}
axios.interceptors.response.use(
  (res) => res,
  (error: AxiosError) => {
    const originalRequest = error.config;
    console.log(originalRequest._retry); // always undefined
    if (error?.response?.status === 401 && !originalRequest._retry) {
      originalRequest._retry = true;
      return axios
        .post("/auth/refresh-token", {}, { withCredentials: true })
        .then((res) => {
          if (res.status === 201) {
            return axios(originalRequest);
          }
        })
    }
    return Promise.reject(error);
  }
);
问题现象

实际运行时发现originalRequest._retry始终为undefined,反而触发了无限循环。在axios的Github仓库检索过相关issue但未找到解决方案。

补充说明:有网友使用最新版axios测试该代码可正常运行。

核心疑问

如果刷新token的请求本身也返回401错误该如何处理?

最终解决方案

问题已解决,死循环的原因是refresh token过期时,刷新token的接口也返回401,将该场景的响应状态码改为400后功能运行正常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 23:57:03