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 相关文章推荐
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
Mar 10 Javascript
豆瓣网的jquery代码实例
Jun 15 Javascript
js 获取中文拼音,Select自动匹配字母获取值的代码
Sep 23 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
May 26 Javascript
JavaScript对象学习经验整理
Oct 12 Javascript
用原生js统计文本行数的简单示例
Aug 19 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
Jun 04 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
Oct 11 Javascript
JS调用安卓手机摄像头扫描二维码
Oct 16 Javascript
浅谈在不使用ssr的情况下解决Vue单页面SEO问题(2)
Nov 08 Javascript
vue路由中前进后退的一些事儿
May 18 Javascript
vue el-table实现递归嵌套的示例代码
Aug 14 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
php实现的返回数据格式化类实例
2014/09/22 PHP
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
PHP排序二叉树基本功能实现方法示例
2018/05/26 PHP
jQuery 对象中的类数组操作
2009/04/27 Javascript
JavaScript prototype属性使用说明
2010/05/13 Javascript
红米手机抢购的js代码
2014/03/10 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
JS中常用的正则表达式
2016/09/29 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
2017/07/14 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
Vue.js实现列表清单的操作方法
2017/11/15 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
2018/10/25 Javascript
vue 解决文本框被键盘遮住的问题
2019/11/06 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
Python下线程之间的共享和释放示例
2015/05/04 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
利用python将json数据转换为csv格式的方法
2018/03/22 Python
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
Python中存取文件的4种不同操作
2018/07/02 Python
python操作excel的方法
2018/08/16 Python
Python函数any()和all()的用法及区别介绍
2018/09/14 Python
Python中的元组介绍
2019/01/28 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
基于Python执行dos命令并获取输出的结果
2019/12/30 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
关于递归的一道.NET面试题
2013/05/12 面试题
30岁生日感言
2014/01/25 职场文书
园林系毕业生求职信
2014/06/23 职场文书
中文专业自荐书
2014/06/29 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
考试后的感想
2015/08/07 职场文书
Python中seaborn库之countplot的数据可视化使用
2021/06/11 Python
MySQL约束超详解
2021/09/04 MySQL