场景描述
- 页面请求接口时,后台返回token过期的状态码,在拦截器中调接口刷新token,并继续上次的页面请求,将结果返回到页面
响应拦截器中的关键代码
if (token过期的状态码) {
return new Promise((resolve, reject) => {
// 调接口刷新token
net.post("xxx/refreshToken", data, res => {
if (刷新token接口成功的状态码) {
// 存入sessionStorage
sessionStorage("token", res.data.token);
// 将headers中的token替换
response.config.headers.token = res.data.token
response.config.headers["content-type"] = "application/json;application/x-www-form-urlencoded;charset=UTF-8;application/javascript";
// 传递给then
resolve(response.config)
}
})
}).then(config => {
return new Promise((resolve, reject) => {
// 继续上次的请求,将结果返回到页面,页面通过.then接收结果
axios(config).then(res => {
resolve(res)
})
})
})
} else {
// console.log('拦截器,正常返回')
return response;
}