import axios from 'axios' import { Loading } from 'element-ui'; import store from '../vuex/store' let domain = process.env.API_ROOT; let axiosInstance = axios.create(); let loadingInstance //设置cookie缓存跨域问题 axios.defaults.withCredentials = true axios.defaults.timeout = 500000 axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8' axios.requestData=function(config){ return config; }; axios.requestData=function(response){ return response; }; axios.error=function(error){ return error; }; axios.interceptors.request.use((config) => { let token=window.localStorage.getItem ("token") if(config.url.indexOf('node') != -1){ loadingInstance = Loading.service({ lock: true, text: '', customClass:'comloadings', spinner: 'icon iconfont icon-loding', background: 'rgba(255,255,255)' }) } if(token){ config.headers.Authorization='Bearer ' + window.localStorage.getItem('token') || '' } return config }) // 返回状态判断 axios.interceptors.response.use((res) => { //localStorage.setItem('locale', 'zh') if(loadingInstance){ setTimeout(()=>{ loadingInstance.close(); },500) } if(res.data.errcode === 1001 || res.data.errcode === 1002 || res.data.errcode === 1003 ){ window.localStorage.removeItem("token") window.localStorage.removeItem("tokenType") store.dispatch('clearUser') window.location.href = '/login' }else { return res } }, error => { if (error && error.res) { switch (error.res.status) { case 400: error.message = '请求错误' break case 401: error.message = '未授权,请登录' break case 403: error.message = '拒绝访问' break case 404: error.message = (process.env.NODE_ENV === 'production' ? `请求地址出错` : `请求地址出错: ${error.response.config.url}`) break case 408: error.message = '请求超时' break case 500: error.message = '服务器内部错误' break case 501: error.message = '服务未实现' break case 502: error.message = '网关错误' break case 503: error.message = '服务不可用' break case 504: error.message = '网关超时' break case 505: error.message = 'HTTP版本不受支持' break default: } Message({ message: error.message, type: 'error', duration: 5 * 1000 }) } return Promise.reject(error) }) // 返回一个Promise POST token export function posToken (url, params) { return new Promise((resolve, reject) => { axios({ method: 'post', url: url, data: params }) .then(response => { resolve(response.data) }, err => { reject(err) }) .catch((error) => { reject(error) }) }) } // 返回一个Promise POST 图片token export function posTokenImg (url, params) { return new Promise((resolve, reject) => { axios({ method: 'post', url: url, data: params, headers:{ 'Content-type': 'multipart/form-data', } }) .then(response => { resolve(response.data) }, err => { reject(err) }) .catch((error) => { reject(error) }) }) } // 返回一个Promise GET export function geToken (url, params) { return new Promise((resolve, reject) => { axios.get(url, { params: params }) .then(response => { resolve(response.data) }, err => { reject(err) }) .catch((error) => { reject(error) }) }) } export default { //-------------------------获取url------------------------------------- 'captcha': domain+'/apis/captcha', // 获取图片验证码 'Avatar': domain, // 获取地址 /*------------------------------------------首页--------------------------------------------*/ Com (params) { // get return geToken(domain + '/apis/com', params) } }
axios引入设置cookie缓存跨域问题
最新推荐文章于 2024-08-21 19:59:39 发布