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深入理解js闭包
Jul 03 Javascript
eclipse导入jquery包后报错的解决方法
Feb 17 Javascript
JavaScript中提前声明变量或函数例子
Nov 12 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
Sep 16 Javascript
总结JavaScript设计模式编程中的享元模式使用
May 21 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
Sep 09 Javascript
jQuery ajax请求struts action实现异步刷新
Apr 19 jQuery
Vue.js实现网格列表布局转换方法
Aug 25 Javascript
vue打包使用Nginx代理解决跨域问题
Aug 27 Javascript
关于layui 弹出层一闪而过就消失的解决方法
Sep 09 Javascript
JS实现随机抽取三人
Nov 06 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
Sep 04 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
PHP ajax 分页类代码
2008/11/13 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
2014/06/30 PHP
PHP获取数组最大值下标的方法
2015/05/12 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
PHP处理CSV表格文件的常用操作方法总结
2016/07/01 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
ie 调试javascript的工具
2009/04/29 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
2014/02/04 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
JS实现身份证输入框的输入效果
2017/08/21 Javascript
Vue中组件之间数据的传递的示例代码
2017/09/08 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
在vue中安装使用vux的教程详解
2018/09/16 Javascript
Vue Cli3 创建项目的方法步骤
2018/10/15 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
2020/11/10 Javascript
说说如何遍历Python列表的方法示例
2019/02/11 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
2020/01/13 Python
pycharm 中mark directory as exclude的用法详解
2020/02/14 Python
Python chardet库识别编码原理解析
2020/02/18 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
北美三大旅游网站之一:Travelocity
2017/08/12 全球购物
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
C语言变量的命名规则都有哪些
2013/12/27 面试题
Linux不知道文件后缀名怎么判断文件类型
2012/04/26 面试题
酒店实习个人鉴定
2013/12/07 职场文书
司机职责范本
2014/03/08 职场文书
教师考核评语
2014/04/28 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
作风转变心得体会
2014/09/02 职场文书
假期读书倡议书3篇
2019/08/19 职场文书
Python 循环读取数据内存不足的解决方案
2021/05/25 Python