/* * @Author: wally * @email: 18603454788@163.com * @Date: 2021-04-19 10:23:19 * @LastEditors: wally * @LastEditTime: 2021-05-06 11:42:20 */ 'use strict'; import Vue from 'vue'; import axios from 'axios'; import router from '../router/index'; import store from '../store/index'; // Full config: https://github.com/axios/axios#request-config // axios.defaults.baseURL = process.env.baseURL || process.env.apiUrl || ''; // axios.defaults.headers.common['Authorization'] = AUTH_TOKEN; // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; let config = { // baseURL: process.env.baseURL || process.env.apiUrl || "" timeout: 60 * 1000, // Timeout // withCredentials: true, // Check cross-site Access-Control }; const _axios = axios.create(config); axios.interceptors.request.use( function(config) { let token = store.state.anyringToken || sessionStorage.getItem('anyringToken'); if (token) { config.headers.Authorization = `Bearer ${token}`; } return config; }, function(error) { // Do something with request error return Promise.reject(error); }, ); // Add a response interceptor axios.interceptors.response.use( function(response) { if (response.data && response.data.code >= 400 && response.data.code < 500) { store.commit('user/sign', ''); router.replace({ path: '/user/login', query: { redirect: router.currentRoute.fullPath }, }); } // Do something with response data return response; }, function(error) { // Do something with response error return Promise.reject(error); }, ); Plugin.install = function(Vue) { Vue.axios = _axios; window.axios = _axios; Object.defineProperties(Vue.prototype, { axios: { get() { return _axios; }, }, $axios: { get() { return _axios; }, }, $http: { get() { return _axios; }, }, }); }; Vue.use(Plugin); export default Plugin;