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 相关文章推荐
js prototype截取字符串函数
Apr 01 Javascript
JavaScript高级程序设计 读书笔记之九 本地对象Array
Feb 27 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
Dec 17 Javascript
javascript里使用php代码实例
Dec 13 Javascript
jquery+css实现动感的图片切换效果
Nov 25 Javascript
jquery实现二级导航下拉菜单效果
Dec 18 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
Jun 07 Javascript
Bootstrap与Angularjs的模态框实例代码
Aug 03 Javascript
input 标签实现输入框带提示文字效果(两种方法)
Oct 09 Javascript
js 提取某()特殊字符串长度的实例
Dec 06 Javascript
RxJS的入门指引和初步应用
Jun 15 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
Jul 31 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设计模式 Prototype (原型模式)代码
2011/06/26 PHP
phpmyadmin中禁止外网使用的方法
2014/11/04 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
php获取指定数量随机字符串的方法
2017/02/06 PHP
php字符串截取函数mb_substr用法实例分析
2019/06/25 PHP
javascript实现的listview效果
2007/04/28 Javascript
JQuery模板插件 jquery.tmpl 动态ajax扩展
2011/11/10 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
总结在前端排序中遇到的问题
2016/07/19 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
VUE页面中加载外部HTML的示例代码
2017/09/20 Javascript
基于javascript中的typeof和类型判断(详解)
2017/10/27 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
vue双向数据绑定知识点总结
2018/04/18 Javascript
ES6之模版字符串的具体使用
2018/05/17 Javascript
解决JavaScript中0.1+0.2不等于0.3问题
2018/10/23 Javascript
jQuery实现简易QQ聊天框
2020/02/10 jQuery
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
Django REST framework视图的用法
2019/01/16 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
python同时替换多个字符串方法示例
2019/09/17 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
python 实现表情识别
2020/11/21 Python
解决pycharm 格式报错tabs和space不一致问题
2021/02/26 Python
毕业生文员求职信
2013/11/03 职场文书
个人自荐书
2013/12/20 职场文书
化妆师职业生涯规划书
2014/02/16 职场文书
终止合同协议书
2014/04/17 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
初三数学教学反思
2016/02/17 职场文书
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS
Go语言基础map用法及示例详解
2021/11/17 Golang