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 相关文章推荐
不懂JavaScript应该怎样学
Apr 16 Javascript
原生js实现类似弹窗抖动效果
Apr 02 Javascript
jQuery on()方法使用技巧详解
Apr 16 Javascript
JavaScript实现点击按钮就复制当前网址
Dec 14 Javascript
js判断移动端是否安装某款app的多种方法
Dec 18 Javascript
JS在一定时间内跳转页面及各种刷新页面的实现方法
May 26 Javascript
xcode中获取js文件的路径方法(推荐)
Nov 05 Javascript
AngularJS中$http使用的简单介绍
Mar 17 Javascript
JS+CSS实现下拉刷新/上拉加载插件
Mar 31 Javascript
通过vue-cli3构建一个SSR应用程序的方法
Sep 13 Javascript
js 计数排序的实现示例(升级版)
Jan 12 Javascript
原生js实现购物车功能
Sep 23 Javascript
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
文件上传类
2006/10/09 PHP
Memcache 在PHP中的使用技巧
2010/02/08 PHP
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
2013/06/24 PHP
php获取中文拼音首字母类和函数分享
2014/04/24 PHP
如何离线执行php任务
2017/02/21 PHP
PHP基于IMAP收取邮件的方法示例
2017/08/07 PHP
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
jQuery照片伸缩效果不影响其他元素的布局
2014/05/09 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
JQuery记住用户名密码实现下次自动登录功能
2015/04/27 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
jQuery3.0中的buildFragment私有函数详解
2016/08/16 Javascript
JavaScript 链式结构序列化详解
2016/09/30 Javascript
PHP自动加载autoload和命名空间的应用小结
2017/12/01 Javascript
微信小程序开发之tabbar图标和颜色的实现
2018/10/17 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
DatePickerDialog 自定义样式及使用全解
2019/07/09 Javascript
React实现全选功能
2020/08/25 Javascript
ant design的table组件实现全选功能以及自定义分页
2020/11/17 Javascript
python通过colorama模块在控制台输出彩色文字的方法
2015/03/19 Python
使用Python求解最大公约数的实现方法
2015/08/20 Python
Python实现二叉搜索树
2016/02/03 Python
django之常用命令详解
2016/06/30 Python
如何将python中的List转化成dictionary
2016/08/15 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
2018/09/04 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
2019/07/08 Python
Python Scrapy图片爬取原理及代码实例
2020/06/12 Python
Python如何发送与接收大型数组
2020/08/07 Python
ASOS亚洲:ASOS Asia
2018/03/04 全球购物
Muziker英国:中欧最大的音乐家商店
2020/02/05 全球购物
金讯Java笔试题目
2013/06/18 面试题
教师竞聘上岗演讲稿
2014/09/03 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
MySql分区类型及创建分区的方法
2022/04/13 MySQL