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 相关文章推荐
PNG背景在不同浏览器下的应用
Jun 22 Javascript
file控件选择上传文件确定后触发的js事件是哪个
Mar 17 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
Aug 10 Javascript
JS+CSS简单树形菜单实现方法
Sep 12 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
Sep 15 Javascript
JavaScript & jQuery完美判断图片是否加载完毕
Jan 08 Javascript
BOM之navigator对象和用户代理检测
Feb 10 Javascript
关于vue的语法规则检测报错问题的解决
May 21 Javascript
vue中如何去掉空格的方法实现
Nov 09 Javascript
如何实现echarts markline标签名显示自己想要的
Jul 20 Javascript
在vue中使用jsonp进行跨域请求接口操作
Oct 29 Javascript
从源码角度来回答keep-alive组件的缓存原理
Jan 18 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
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
php XPath对XML文件查找及修改实现代码
2011/07/27 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
PHP实现的简单AES加密解密算法实例
2017/05/29 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
在JavaScript中通过URL传递汉字的方法
2007/04/09 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
实现动画效果核心方式的js代码
2013/09/27 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
jQuery选择器源码解读(二):select方法
2015/03/31 Javascript
javascript中的五种基本数据类型
2015/08/26 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
Bootstrap实现input控件失去焦点时验证
2016/08/04 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
Vue组件通信的四种方式汇总
2018/02/08 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
2020/02/15 Javascript
Vue组件生命周期运行原理解析
2020/11/25 Vue.js
解决Django数据库makemigrations有变化但是migrate时未变动问题
2018/05/30 Python
5分钟 Pipenv 上手指南
2018/12/20 Python
Python2 Selenium元素定位的实现(8种)
2019/02/25 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
Linux内核产生并发的原因
2012/07/13 面试题
舞蹈比赛获奖感言
2014/02/04 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
本溪水洞导游词
2015/02/11 职场文书
幸福终点站观后感
2015/06/04 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
防止web项目中的SQL注入
2021/12/06 MySQL