当 token 过期触发 401 状态码时,若刷新令牌请求同样被该拦截器捕获,便会反复重试形成死循环;根本解决方案是使用一个独立、不含任何响应拦截器的 Axios 实例来专门处理刷新请求。
坦诚来说,这个问题在实际项目中相当隐蔽,但其造成的破坏力却不容小觑。一旦 Token 失效,服务端返回 401 后,拦截器会自动执行刷新操作。然而关键隐患在于:如果刷新令牌的请求(例如 /auth/refresh-token 接口)也是由同一个配置了响应拦截器的 axiosInstance 发起,那么它将再次落入相同的错误处理逻辑中。更糟糕的是,该刷新请求自身也可能返回 401(比如 Refresh Token 已过期),并且因为没有携带 _retry 标记,又会触发新的一轮刷新调用。如此循环往复,最终形成“请求失败 → 触发刷新 → 刷新请求被拦截 → 再次失败 → 再次触发刷新”的无限循环,轻则页面卡死,重则重定向功能彻底失效。核心症结就在于:刷新逻辑被自己设置的“路障”所绊倒。
