• Vue 请求拦截 request


    import axios from 'axios'
    axios.defaults.withCredentials=true;
    import store from '@/store/index'
    import router from '@/router'
    import {
      getToken
    } from '@/utils/auth'
    import NProgress from 'nprogress'
    // 是否显示加载圈
    NProgress.configure({
      showSpinner: false
    })

    const request = axios.create({
      baseURL: process.env.VUE_APP_BASE_URL, // api 的 baseURL
      timeout: 60000, //设置请求时长
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
      }
    })



    //请求拦截器
    request.interceptors.request.use(
      config => {
        if (store.state.token) {
          // let each request carry token
          // ['X-Token'] is a custom headers key
          // please modify it according to the actual situation
          // config.headers['X-Token'] = getToken()
          if (getToken()) {  请求头
            config.headers['Authorization'] = getToken()
          }
        }
        NProgress.start()
        return config
      },
      error => {
        return Promise.reject(error)
      }
    )
    //响应拦截器
    request.interceptors.response.use(
      response => {


        if(!response.data.hasOwnProperty("code")){
          if (response.data.substring(0,100).indexOf("<html") != -1){ //如果包含这个请求头 DOCTYPE 则代表  需要重新登陆
            router.push({
              path: '/'
            })
          }
        }

       /* console.log(response.data.indexOf("DOCTYPE"),"打印respose")
        console.log(response,"打印respose2")*/
        NProgress.done()
        return response
      },
      error => {
        NProgress.done()
        //获取状态码
        const status = error.request.status;
        //如果是401则跳转到登录页面
        if (status === 1001) {
          router.push({
            path: '/'
          })
        };
        // 如果请求为非200否者默认统一处理
        // if (status !== 200 && status !== 400) {
        //   Message({
        //     message: JSON.parse(error.request.response).message|| '未知错误',
        //     type: 'error'
        //   });
        // }
        // console.log(error);
        return Promise.reject((typeof error.request.response == 'string') ? JSON.parse(error.request.response) : error.request.response)
      }
    )

    export default request
     
    工作中如果有您解决不了的问题或者您花费2小时还没解决的问题,这里可以有偿帮您高效直接解决bug,wx号:18062748486,备注”bug解决“;
  • 相关阅读:
    FTP解决办法:服务器发回了不可路由的地址。使用服务器地址代替。
    隐藏显示终端的光标(shell echo,linux c printf)
    FTP服务2种工作方式详解,PORT方式和PASV方式,(即主动模式和被动模式)
    XP使用VNC远程桌面CentOS 6(原创,备忘)
    LINUX命令行技巧
    FTP服务器(vsftpd)配置随笔
    更快、更强 64位编程的三十二条军规
    MFC 程序入口和执行流程
    css实现居中
    treeview控件显示指定目录下的目录和文件
  • 原文地址:https://www.cnblogs.com/emmawang1988/p/16284196.html
Copyright © 2020-2023  润新知