Axios 拦截器不会在页面加载时拦截
Posted
技术标签:
【中文标题】Axios 拦截器不会在页面加载时拦截【英文标题】:Axios interceptor doesn't intercept on page load 【发布时间】:2018-01-20 18:29:37 【问题描述】:我在我的 Vue 应用程序中实施 JWT 以进行授权,并且在使用令牌后刷新我的令牌。
我使用了 axios 拦截器,因此我可以拦截对我的 API 后端的每个请求,这似乎适用于登录等...但是一旦我刷新页面,请求就会使用最后一个令牌正常发出。
问题是 axios 拦截器此时似乎不起作用,所以一旦使用了令牌,我就无法用新的来更新它。
我是这样设置拦截器的:-
window.axios.interceptors.request.use(function (config)
console.log("Sent request!");
return config;
, function (error)
console.log("Failed sending request!");
return Promise.reject(error);
);
window.axios.interceptors.response.use(function (response)
console.log("Got headers:", response.headers);
if (response.headers.hasOwnProperty('authorization'))
console.log("Got authorization:", response.headers.authorization);
Store.auth.setToken(response.headers.authorization);
return response;
, function(err)
console.log("Got error", err);
);
我在页面加载时没有收到任何 console.log
。
我在根应用程序的beforeMount
方法中设置我的拦截器。我尝试将它们移至beforeCreate
,但仍然遇到同样的问题。
【问题讨论】:
【参考方案1】:试试这个
window.axios.interceptors.request.use(function (config)
console.log("Sent request!");
if(localStorage.getItem('id_token')!=undefined)
config.headers['Authorization'] = 'Bearer '+localStorage.getItem('id_token')
return config; , function (error)
console.log("Failed sending request!");
return Promise.reject(error); );
【讨论】:
以上是关于Axios 拦截器不会在页面加载时拦截的主要内容,如果未能解决你的问题,请参考以下文章
带有 Axios 的 Nuxt 在页面加载时不会从 API 获取数据
在 Next.js 中,如何在 axios 拦截器中重定向页面?
如何在 axios 拦截器中编写重定向而不在 React JS 中重新加载
利用axios的request 拦截器,response 拦截器实现加载层的效果