为什么Axios请求拦截器没触发?请求头没添加进去
我给Axios设置了请求拦截器,想统一加token,但发现请求头里根本没有Authorization字段。我直接在拦截器里打log也看不到输出,这是怎么回事?
代码是这样写的:
axios.interceptors.request.use(config => {
console.log('进入拦截器')
config.headers.Authorization = <code>Bearer ${localStorage.token}</code>
return config
})
我检查了localStorage确实有token,发送请求时控制台也没报错,就是拦截器里的log没打印出来。是不是拦截器没生效啊?
如果还是不行,检查下项目里有没有其他地方重写了headers或者又套了别的拦截器。
正确写法是:
而且你直接用 axios.interceptors 会污染全局实例,建议用 axios.create() 创建一个自定义实例专门处理业务请求。数据库层面我们通常都会加统一拦截器来处理 token 刷新、错误重试这些逻辑,不要直接改全局对象。
现在你拦截器没触发,大概率是因为发请求时拦截器还没注册上。比如你可能在组件 mounted 里才注册拦截器,但请求已经发出去了。