JS Ajax请求会话过期处理问题解决方法分析


Posted in Javascript onNovember 16, 2019

本文实例讲述了JS Ajax请求会话过期处理问题解决方法。分享给大家供大家参考,具体如下:

对于页面来说,处理session过期比较简单,一般只需在过滤器里面判断session用户是否存在,不存在则跳转页面到登陆页即可。

对于Ajax请求来说,这个办法则无效,只能获取到登录页的html代码。原因在于Ajax请求是XMLHTTPRequest对象发起的而不是浏览器,而服务器返回的信息接收者也是XMLHTTPRequest,非浏览器。

解决办法:

服务器端

可在返回的ResponseHeader里添加一个标识变量,以便在Javascript里处理。以Java为例,可在过滤器里进行如下处理:

try {
  // Ajax请求会话过期处理
  String requestType = request.getHeader("X-Requested-With");
  if (StringUtils.isNotEmpty(requestType) && requestType.equalsIgnoreCase("XMLHttpRequest")) {
    response.setHeader("SessionStatus", "sessionTimeOut");
    requestContext.abortWith(Response.status(401).build());
    return;
  }
  // 处理页面跳转
  requestContext.abortWith(Response.accepted().build());
  response.sendRedirect(loginPath);
} catch (IOException ex) {
  //do nothing
}

Javascript端

可通过JQuery的ajaxComplete方法进行处理,判断发送请求时是否会话已过期。

/**
 * ajax请求判断会话是否已过期
 */
$(document).ajaxError(function (event, jqXHR, options, errorMsg) {
  var sessionStatus = jqXHR.getResponseHeader('SessionStatus');
  if (sessionStatus && sessionStatus === 'sessionTimeOut') {
    alert("您的会话已过期,请重新登录");
    location.href = "login";
  }
});

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
js动态修改input输入框的type属性(实现方法解析)
Nov 13 Javascript
JavaScript通过join函数连接数组里所有元素的方法
Mar 20 Javascript
js对字符串进行编码的方法总结(推荐)
Nov 10 Javascript
浅谈jquery页面初始化的4种方式
Nov 27 Javascript
jQuery插件echarts实现的多折线图效果示例【附demo源码下载】
Mar 04 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
Jun 30 Javascript
vuex 解决报错this.$store.commit is not a function的方法
Dec 17 Javascript
vue组件之间通信方式实例总结【8种方式】
Feb 22 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
Mar 28 Javascript
微信小程序 checkbox使用实例解析
Sep 09 Javascript
Vue+webpack实现懒加载过程解析
Feb 17 Javascript
js+cavans实现图片滑块验证
Sep 29 Javascript
vue中注册自定义的全局js方法
Nov 15 #Javascript
微信sdk实现禁止微信分享(使用原生php实现)
Nov 15 #Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
Nov 15 #Javascript
微信小程序自定义导航栏(模板化)
Nov 15 #Javascript
在node环境下parse Smarty模板的使用示例代码
Nov 15 #Javascript
微信小程序自定义头部导航栏(组件化)
Nov 15 #Javascript
create-react-app中添加less支持的实现
Nov 15 #Javascript
You might like
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
apycom出品的jQuery精美菜单破解方法
2011/02/18 Javascript
jQuery使用height()获取高度需要注意的地方
2014/12/13 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
使用Browserify配合jQuery进行编程的超级指南
2015/07/28 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
2015/08/06 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
整理关于Bootstrap警示框的慕课笔记
2017/03/29 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
JavaScript表单验证实现代码
2017/05/22 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
2017/11/01 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
JS实现旋转木马轮播图
2020/01/01 Javascript
React学习之受控组件与数据共享实例分析
2020/01/06 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
2020/09/22 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
[06:48]DOTA2-DPC中国联赛2月26日Recap集锦
2021/03/11 DOTA
Python实现PS滤镜Fish lens图像扭曲效果示例
2018/01/29 Python
用python生成1000个txt文件的方法
2018/10/25 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
2018/11/29 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
Python 生成VOC格式的标签实例
2020/03/10 Python
详解css3 object-fit属性
2018/07/27 HTML / CSS
汇集了世界上最好的天然和有机美容产品:LoveLula
2018/02/05 全球购物
全球性的女装店:storets
2019/06/12 全球购物
英国卫浴商店:Ergonomic Design
2019/09/22 全球购物
二手房购房意向书范本
2014/04/01 职场文书
《火烧云》教学反思
2014/04/12 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
MySQL三种方式实现递归查询
2022/04/18 MySQL
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL