请求拦截器与响应拦截器

import axios from 'axios'
// 创建axios实例
const service = axios.create({
    baseURL:"https://t.culture.xinxin.com",
    timeout:5000,
})

 请求拦截器:发送请求的时候,携带一些信息

// 请求拦截器
service.interceptors.request.use(config =>{
    const token=localStorage.getItem('token')
    if(token){
        // 网站设置了​Access-control-allow-origin: *,并没有实际危害,因为并不能跨域读取私密数据(登录后才可见数据)
        // 当跨域请求需要携带cookie时,请求头中需要设置Access-Control-Allow-Credentials:true。
        config.headers={'Access-Control-Allow-Origin':'*','Access-Control-Allow-Credentials': 'true'};
        // contentType指定类型的数据格式,axios默认的请求头content-type类型是’application/json;charset=utf-8’.application/json数据会以json字符串的形式发送到后端;
        config.headers['contentType'] = "application/json; charset=utf-8";
        // 发送给服务器的格式在接收的时候要一致
        config.headers['dataType'] = "json";
         // 每个请求携带自定义 token 请根据实际情况自行修改
        config.headers= {Authorization:'Bearer ' + token};

    }
    return config
})

响应拦截器:接收到数据的时候,进行数据过滤、对状态码判断,进行对应的操作

// 响应拦截器
service.interceptors.response.use(res =>{
    if(res.data.errcode === 4009){
        console.log('登录过期,请重新登录')
        Notification.error({ title: '系统提示', message:'登录过期,请重新登录',duration: 4000});
        localStorage.removeItem('token');
        localStorage.removeItem('ms_username');
        localStorage.removeItem('ms_userID');
        window.location.reload();
        setTimeout(() => {
            router.push({ path: '/login'});
        },1000)
        // window.location.href = '/login'
        return;
    }
    return res.data
},err=>{
    return Promise.reject(err)
}
)

前端项目中将Token存储在请求头(Authorization)请参照

前端项目中将Token存储在请求头(Authorization)_贝塔iii的博客-CSDN博客_前端把token加到请求头

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值