zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    设计模式-1-概要(c#版)
    UML图示说明
    阿里云SLB双机IIS多站点负载均衡部署笔记
    阿里云分布式关系数据库DRDS笔记
    一些小经验
    NOSQL场景梳理
    内核linux-3.4.2支持dm9000
    构建根文件系统
    u-boot-1.1.6移植之dm9000
    移植u-boot-1.1.6(原创)
  • 原文地址:https://www.cnblogs.com/xiaozhu-zhu/p/11945053.html
Copyright © 2011-2022 走看看