import axios from "axios" import Cookies from "js-cookie" import NProgress from "nprogress" import { Message } from "element-ui" import router from "@/router/index" import store from "@/store" import conf from "../config/index"; // 路径配置 // axios默认配置 axios.defaults.timeout = 1000000000 // 超时时间 axios.defaults.baseURL = conf.baseURL // http request 拦截器 axios.interceptors.request.use(config => { NProgress.start() config.headers["Content-Type"] = "application/json;charset=UTF-8" const source = axios.CancelToken.source(); store.commit('setTokenSources', [source.token, source.cancel]) config.cancelToken = source.token; // if (Cookies.get("access_token")) { // config.headers.Authorization = "Bearer" + Cookies.get("access_token") // } return config }, error => { return Promise.reject(error.response) }) // http response 拦截器 axios.interceptors.response.use( response => { const res = respones.data; NProgress.done() if (respones.config.cancelToken) { store.commit('delTokenSources', respones.config.cancelToken) } if (respones.status == 200) { Cookies.set("access_token", response.data.message, { expires: 1 / 12 }) // console.log(respones.status) if (res.code == 999) { if (!location.href.includes('localhost')) { if (res.data) { window.location.href = res.data } else { router.push({ path: '/login' }) if (res.message.includes('不存在')) { Message({ message: res.message, type: 'error', duration: 3 * 1000 }) } } } return } else { Cookies.set("access_token", response.data.message, { expires: 1 / 12 }) } } return Promise.resolve(response) }, error => { Message({ message: error.message, type: 'error', duration: 3 * 1000 }) if (error.response == undefined) { return Promise.reject(error); } Message.closeAll() const { status } = error.response if (status === 403 || status === 401) { Message({ message: "未登录或登录超时,即将跳转到登录页面", type: 'error', duration: 3 * 1000 }) router.push({ path: '/login', query: { url: window.location.href } }) return } return Promise.reject(error.response) // 返回接口返回的错误信息 }) export default axios