vue 文件 http配置 跨域问题 俱全

时间:2019-11-27
本文章向大家介绍vue 文件 http配置 跨域问题 俱全,主要包括vue 文件 http配置 跨域问题 俱全使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
/**
 * http配置
 */
import axios from 'axios'
import qs from 'qs'
import store from '../store/index'
import router from '../router/index'
import {getStore} from 'src/config/cache'
 
const instance = axios.create();
// axios 配置
 
//网络连接失败(连接不上)的时候,延迟5s报错吗
instance.defaults.timeout = 120000;
console.log(process.env.NODE_ENV);
if (process.env.NODE_ENV === 'production') {
  //配置生产接口域名
  instance.baseURL = "http://bt-lzxkm.yunzhenshi.com.cn/lzxk/" // 
  // instance.baseURL = "http://192.168.14.32:8082/lzxk/" //   这里不加 http:// 会有问题 会拼接 192.168.14.32:8082
} else {
  //配置开发接口域名
  instance.baseURL = "http://192.168.18.135:8080/" // 
  // instance.baseURL="http://192.168.18.146:8080/"  // 
  // instance.baseURL="http://192.168.18.142:8080/"  // 
 
 
}
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'
 
//把 token 放在请求的头部。
axios.interceptors.request.use = instance.interceptors.request.use
instance.interceptors.request.use(
  config => {
    //在请求拦截器中配置公共参数 sessionId
    //const sessionId = "9999";
    // 如果是post请求就把默认参数拼到data里面
    // 如果是get请求就拼到params里面
    let accountNum = '';
    if (getStore('accountNum')) {
      accountNum = getStore('accountNum');
    }
 
    let accountName = '';
    if (getStore('accountName')) {
      accountName = getStore('accountName');
    }
    if (config.method === 'post') {
      let data = qs.parse(config.data);
      config.data = qs.stringify({
        accountNum: accountNum,
        accountName: accountName,
        ...data
      });
    } else if (config.method === 'get') {
      config.params = {
        accountNum: accountNum,
        ...config.params
      }
    }
    return config
  },
  err => {
    return Promise.reject(err)
  },
)
 
// http response 拦截器
instance.interceptors.response.use(
  response => {
    if (response.data.code == 12105){
      console.log("返回过期错误码:"+response.data.code);
      alert("登录过期,请重新登录");
      router.currentRoute.path !== 'login' &&
      router.replace({
        path: 'login',
        query: {redirect: router.currentRoute.path},
      });
      return Promise.reject(response.data);
    } else if (response.data.code && response.data.code != 1) {
      alert(response.data.msg);
      return Promise.reject(response.data);
    } else {
      return response
    }
 
 
  },
  error => {
    console.log(error);
    if (error.response) {
      switch (error.response.status) {
        case 401:
          // 401 清除token信息并跳转到登录页面
          store.commit(types.LOGOUT)
 
          // 只有在当前路由不是登录页面才跳转
          router.currentRoute.path !== 'login' &&
          router.replace({
            path: 'login',
            query: {redirect: router.currentRoute.path},
          })
      }
    }
    return Promise.reject(error);
//  return Promise.reject(error.response.data)
  },
)
 
export default instance

原文地址:https://www.cnblogs.com/xiaozhu-zhu/p/11945053.html