Vue前端使用axios统一进行拦截和进行跨域的处理

拦截(下载axios框架)

1. 在根目录下面可以创建一个utils或者其他目录,然后在创建一个统一进行拦截的文件api.js

2.导入相关的axios和router,以及进行弹框处理的Message的element-ui的组件

3.写上你的拦截器

代码如下:

import axios from 'axios'
import { Message } from 'element-ui'
import router from '../router'
//请求拦截器
axios.interceptors.request.use(config=>{
   //如果存在token,请求携带这个token
    if(window.sessionStorage.getItem('tokenStr')){
        config.headers['Authorization'] = window.sessionStorage.getItem('tokenStr');
    }
    return config;
},error => {
    console.log(error);
})



// 响应拦截器
axios.interceptors.response.use(success =>{
    if(success.status && success.status == 200){
        // 401没有登录 403权限禁止
        if(success.data.code == 500 || success.data == 401 || success.data.code ==403){
            Message.error({message:success.data.message});
            return;
        }
        if(success.data.message){
            Message.success({message:success.data.message});
        }
    }
    return success.data;

},error => { 
    // 如果根本没有访问到服务器
    if(error.response.code == 504 || error.response.code == 404){
        Message.error({message:'服务器被吃了o(╯□╰)o'});
    }else if(error.response.code == 403){
        Message.error({message:'权限不足,请联系管理员'});
    }else if(error.response.code==401){
        Message.error({message:'尚未登录,请登录'});
        router.replace("/");
    }else {
        if(error.response.data.message){
            Message.error({message:error.response.data.message});
        }else {
            Message.error({message:'未知错误'})
        }

    }
    return;
})
let base = '';

//传送json数据的post请求
export const postRequest=(url,params)=>{
    return axios({
        method:'post',
        url:`${base}${url}`,
        data:params

    })

}


//携带数据的get请求
export const getRequest=(url,params)=>{
    return axios({
        method:'get',
        url:`${base}${url}`,
        data:params

    })

}
export const deleteRequest=(url,params)=>{
    return axios({
        method:'delete',
        url:`${base}${url}`,
        data: params,
    })
}

export const putRequest=(url,params)=>{
    return axios({
        method:'put',
        url:`${base}${url}`,
        data: params,
    })
}



跨域处理

1.在根目录下面创建一个vue.config.js文件,然后写上如下的内容,相关的注释里面有写

let proxyObj={}

proxyObj['/']={
    // webSocket的代理
    ws:false,

    // 目标地址
    target:'http://localhost:8081',
    // 发送请求头host会被设置为target
    changeOrigin: true,
    //不重写请求地址
    pathRewrite:{
        '^/':'/'
    }
}



module.exports={
    devServer:{
        host:'localhost',
        port:8080,
        proxy:proxyObj
    }

}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有时间指导毕业设计

觉得写的好的话可以给我打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值