在基于Vue的SPA的main.js中,我具有以下代码段:
let token = localStorage.getItem('token');
if (token) {
Vue.prototype.$http.defaults.headers.common['Authorization'] = 'Bearer ' + token;
Vue.prototype.$http.interceptors.request.use(function (config) {
if (! config.url.includes('/update')) {
store.dispatch('auth/getToken').then(newToken => {
token = newToken;
config.headers.Authorization = 'Bearer ' + newToken;
return config;
});
}
return config;
}, function (error) {
// Do something with request error
return Promise.reject(error);
});
}
在上面的代码段中,我检查是否有令牌,如果有,则在全局添加Authorization标头。
我还添加了一个请求拦截器,该拦截器可检索新令牌并尝试将新令牌添加到已拦截请求的auth标头中。但是被拦截的请求的标头中仍然有旧令牌。
为了给您一个清晰的主意,这是我想要实现的目标:
/foo
发出了HTTP请求/update
,那么在点击/foo
之前,我要向/update
发出一个http请求,并对原本用于拦截请求的标头进行一些更改(/foo
)。修改标题后,才真正要打{{1}}。但是我的拦截器无法正常运行。配置中的修改不会影响所拦截的请求。我在做什么错了?