转载请注明出处: 前端
项目中用到了单点登陆,依赖的公司通用的jar包,且项目为先后端分离的方式,为了管理系统的全部请求和ios
超时管理,用到了axios,作前端请求拦截,并作管理。npm
其有如下特色:json
axios是请求后台资源的模块,用来请求后台资源。在项目中安装的方法为,在对应的项目路径下,后dos窗口axios
执行如下命令:后端
npm install axios
安装成功后会在项目的package.json文件中出现对象安装插件的版本:前后端分离
在main.js中引用改模块:jsonp
import axios from 'axios';
开始进行拦截请求: spa
axios.interceptors.request.use((config) => { console.info(config); // 请求拦截 jsonp('/authStatus', null, (err, data) => { console.info(data);
// 请求拦截响应的参数,判断是否会话过时
if(!data.hasLogin){
// 页面刷新跳转到登陆页面 window.location.href = loginTimeOutUrl; } }) return config; });
拦截请求响应数据:prototype
Vue.prototype.$http = axios; axios.defaults.crossDomain = true; axios.interceptors.response.use((response) => { if (response && response.data) { if (response.data.status == "UNKNOWN" || response.status == 302) { //alert("passport登陆超时,刷新从新登陆"); window.location.reload(); } else { return response; } } else { return response; } }, function (error) { if (302 == error.response.status || error.response.status == "UNKNOWN") { //alert("passport登陆超时,刷新从新登陆"); window.location.reload(); } else { return Promise.reject(error); } }); axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
本文参考:https://www.kancloud.cn/yunye/axios/234845