import axios from 'axios' import { Message } from 'element-ui' import config from '@/conf/config' import { getHeader } from './header' // 创建axios实例 const service = axios.create({ baseURL: config.baseApi, // 基础URL timeout: config.apiTimeout // 请求超时时间 }) // 请求拦截器 service.interceptors.request.use( config => { let _header = getHeader(); // 在发送请求之前做些什么 config.headers['Content-Type'] = 'application/json' config.headers['Accept'] = 'application/json' config.headers['app-id'] = _header['app-id'] config.headers['TRANSACTION-ID'] = _header['TRANSACTION-ID'] config.headers['REQ-TIME'] = _header['REQ-TIME'] config.headers['SIGN'] = _header['SIGN'] config.headers['user-id'] = _header['user-id'] config.headers['X-Requested-With'] = 'XMLHttpRequest' // 这里可以添加token等认证信息 config.headers['Authorization'] = _header['Authorization'] if(config.url.indexOf('/app/') == -1 && config.url.indexOf('/callComponent/') == -1){ config.baseURL = "/app" } return config }, error => { console.log(error) return Promise.reject(error) } ) // 响应拦截器 service.interceptors.response.use( response => { const res = response.data if (res.code && res.code != 0) { Message({ message: res.msg || 'Error', type: 'error', duration: 5 * 1000 }) return Promise.reject(new Error(res.message || 'Error')) } else { return response } }, error => { console.log(error) // 判断是否为401未授权错误 if (error.response && error.response.status === 401) { // 清除本地存储的token localStorage.removeItem('token') // 跳转到登录页面 window.location.href = '/#/views/user/login' Message({ message: '登录已过期,请重新登录', type: 'error', duration: 5 * 1000 }) } return Promise.reject(error) } ) export default service