axios.defaults.timeout = 1000 * 10; axios.interceptors.request.use( function (config) { if (config.method === 'post' && config.url.indexOf('/getToken') === -1 && config.url.indexOf('/refreshToken') === -1) { if (store.state.token.accessToken) { config.withCredentials = true; config.headers['Authorization'] = 'Bearer ' + store.state.token.accessToken; } } loading.show(); return config; }, function (error) { loading.hide(); console.error(error); return Promise.reject(error); } ); axios.interceptors.response.use(function (response) { loading.hide(); return response; }, function (error) { loading.hide(); console.error(error); if (error.response) { if (error.response.status === 401) { if (store.state.token.refreshToken) { var url = config.service('platform/api/v1/token/refreshToken') var data = '"' + store.state.token.refreshToken + '"'; return axios.post(url, data, { headers: { 'Content-Type': 'application/json;charset=UTF-8' } }) .then(function (response) { store.commit('login', response.data); error.config.headers['Authorization'] = 'Bearer ' + store.state.accessToken; console.log('redo request after refresh token'); return axios(error.config); }) .catch(function (error) { if (error.response.status === 401) { store.commit('logout', response.data); console.log('refreshToken 已过期'); router.push('components/views/areas/default/login.vue'); } else { console.error(error); } }); } else { router.push('components/views/areas/default/login.vue'); } } else if (error.response.status === 403) { //alert } } else { if (error.message.indexOf('timeout') !== -1) { Swal.fire({ title: '请求超时,请返回重试', timer: 1500 }); } } return Promise.reject(error); });