vue ajax 拦截原理与实现方法示例


Posted in Javascript onNovember 29, 2019

本文实例讲述了vue ajax 拦截原理与实现方法。分享给大家供大家参考,具体如下:

概要说明

在开发的过程中,我们需要通过AJAX请求,访问后台获取数据,这个获取数据的时候,当然需要后台需要时登录状态才能访问数据,当没有登录的情况,这个时候我们需要跳转到登录界面进行登录。

如果每次请求都要做如下处理,我们程序逻辑将无比混乱,ajax 可以为我们解决这个问题。

具体实现思路是:

1.发送ajax 请求访问后端数据。

2.后端如果发现没有登录,那么将会丢出一个exceptionaction 的http 响应头。

3.这个判断将在ajax 拦截中处理,只要有这个响应头,我们会检查是否有登录token,如果没有就会去到登录界面,如果有则尝试使用token自动登录。

这个过程将在拦截中完成。

这个好处是 客户只需要关注业务代码的编写,登录处理放到拦截中处理,而且所有的请求将都会被拦截。

实现代码

const axiosInstance = axios.create({
  timeout: 20000,
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'X-Requested-With': 'XMLHttpRequest'
  }
});

axios 是我们访问后台的JS框架。

定义拦截处理。

function interceptAjax(res){
  var tmp = res.headers["exceptionaction"];
  if(!tmp) return res;
  //系统已经登录。
  var token = RxUtil.getCache("token");
  if(!token) {
    router.push({
      name: "login"
    });
    return;
  }

使用拦截器。

axiosInstance.interceptors.response.use(res=>interceptAjax(res));

这样每次访问都会经过拦截器,这也给我们一些思路,一些需要统一验证的的访问,可以通过拦截器进行处理。

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
农历与西历对照
Sep 06 Javascript
js 表单验证方法(实用)
Apr 28 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
Sep 11 Javascript
JavaScript常用数组算法小结
Feb 13 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
Oct 16 Javascript
jQuery实现淡入淡出的模态框
Feb 09 Javascript
JS非空验证及邮箱验证的实例
Aug 11 Javascript
基于jQuery解决ios10以上版本缩放问题
Nov 03 jQuery
浅谈在node.js进入文件目录的问题
May 13 Javascript
jQuery分组选择器简单用法示例
Apr 04 jQuery
JS中getElementsByClassName与classList兼容性问题解决方案分析
Aug 07 Javascript
vue实现同时设置多个倒计时
May 20 Vue.js
VUE 实现动态给对象增加属性,并触发视图更新操作示例
Nov 29 #Javascript
js中关于Blob对象的介绍与使用
Nov 29 #Javascript
js blob类型url的视频下载问题的解决
Nov 29 #Javascript
JavaScript之Blob对象类型的具体使用方法
Nov 29 #Javascript
VuePress 中如何增加用户登录功能
Nov 29 #Javascript
Vue.directive 实现元素scroll逻辑复用
Nov 29 #Javascript
Vue.js实现大屏数字滚动翻转效果
Nov 29 #Javascript
You might like
解析Extjs与php数据交互(增删查改)
2013/06/25 PHP
教你如何使用php session
2013/10/28 PHP
php备份数据库类分享
2015/04/14 PHP
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
php实现微信模板消息推送
2018/03/30 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
js setTimeout 参数传递使用介绍
2013/08/13 Javascript
js中的异常处理try...catch使用介绍
2013/09/21 Javascript
详解JavaScript中undefined与null的区别
2014/03/29 Javascript
jquery实现的一个简单进度条效果实例
2014/05/12 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
2015/04/17 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
javascript防篡改对象实例详解
2017/04/10 Javascript
javascript 中模板方法单例的实现方法
2017/10/17 Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
2017/11/29 Javascript
Vue用v-for给src属性赋值的方法
2018/03/03 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
简化Python的Django框架代码的一些示例
2015/04/20 Python
Python文本相似性计算之编辑距离详解
2016/11/28 Python
python搭建服务器实现两个Android客户端间收发消息
2018/04/12 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
python递归法实现简易连连看小游戏
2020/03/25 Python
python中安装django模块的方法
2020/03/12 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
python使用numpy中的size()函数实例用法详解
2021/01/29 Python
西雅图的买手店:Totokaelo
2019/10/19 全球购物
酒店管理毕业生自我鉴定
2014/03/02 职场文书
爱心活动计划书
2014/04/26 职场文书
MySQL时间盲注的五种延时方法实现
2021/05/18 MySQL
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
2022/01/18 HTML / CSS