为什么我的axios请求拦截器设置的headers没生效?
在用axios写请求拦截器时,明明在config.headers里加了token,但抓包发现请求头里始终没有这个字段,这是怎么回事?
我的代码是这样的:
axios.interceptors.request.use(config => {
const token = localStorage.getItem('token');
config.headers.Authorization = <code>Bearer ${token}</code>;
return config;
}, error => Promise.reject(error));
已经检查过localStorage确实有token值了,控制台也没有报错,但每次请求的Authorization头都为空。之前用同样的写法在另一个项目没问题,这次换了新项目就这么奇怪…
你可以先确认下请求的 Content-Type 是不是 multipart/form-data,比如上传文件的时候经常会遇到这种情况。
直接用这个代码改一下你的拦截器:
另外,如果你的项目用了自定义的 axios 实例或者第三方封装库(比如 axios 的某些封装工具),记得检查是不是被覆盖了 headers。
还有个常见问题是,有些后端框架对大小写敏感,默认只认首字母大写的
Authorization,所以最好统一格式。实在不行,抓包看下最终发出的请求到底长啥样,再针对性调整。别忘了确认下项目的 axios 版本,老版本可能有坑。