• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    使用Ajax时处理用户session失效问题的解决方法

    在使用spingMVC的拦截器来处理用户session失效的问题时,当用户session失效会返回一串javascript字符串强制用户浏览器跳转至登录页面。然而当使用Ajax请求数据时,在验证失败后只会响应一串字符串,JavaScript并不会执行,这是由于Ajax的请求是由XMLHTTPRequest对象发起的而不是浏览器,在验证失败后服务器返回的信息会被XMLHTTPRequest对象接收到并保存在js对象中。

    为了应对这种情况,可以在后台对Http请求先进行判断,将Ajax请求与普通http请求分开处理。
    观察Ajax发送的请求头信息可以发现,Ajax请求的头信息中会带有X-Requested-With:XMLHttpRequest,通过这个可以判断是否是Ajax请求。

    String requestType = request.getHeader("X-Requested-With");
    if(requestType != null  "XMLHttpRequest".equalsIgnoreCase(requestType.trim())) {
      //如果是ajax请求
      response.setHeader("sessionStatus", "timeout");
      response.sendError(601, "session timeout.");
      return false;
    }
    

    javascript代码,可以设置Ajax请求的全局默认options,一劳永逸

    //设置Ajax请求的全局默认options
    jQuery.ajaxSetup({
      type:'post',
      complete:function(xhr, ts){ //XMLHttpRequest, textStatus
        var sessionStatus = xhr.getResponseHeader('sessionstatus');
        if(sessionStatus == 'timeout') {
          alert('页面过期,请重新登录!');
          window.top.location.href = 'Login.htm';
        }
      }
    });

    项目中还使用到了DataTables做数据表格,发现用上边javascript的配置方法在datatables中不能生效,错误信息参见:http://datatables.net/tn/7 要配置ajax的error属性才可以

    $('#example').dataTable( {
     "ajax": {
      "url": "findRoles.htm",
      "type": "POST",
      "error": function(xhr, ts, et) { //XMLHttpRequest, textStatus, errorThrown
        var sessionStatus = xhr.getResponseHeader('sessionstatus');
        if(sessionStatus == 'timeout') {
          alert('页面过期,请重新登录!');
          window.top.location.href = 'Login.htm';
        }
      }
     }
    });
    
    

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • Ajax异步文件上传与NodeJS express服务端处理
    • 完美解决ajax访问遇到Session失效的问题
    • ajax请求Session失效问题
    • Ajax请求session失效该如何解决
    • Ajax Session失效跳转登录页面的方法
    • ajax 操作全局监测,用户session失效的解决方法
    • express如何解决ajax跨域访问session失效问题详解
    上一篇:基于bootstrap的上传插件fileinput实现ajax异步上传功能(支持多文件上传预览拖拽)
    下一篇:Ajax 向数据库修改和添加功能(较简答)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    使用Ajax时处理用户session失效问题的解决方法 使用,Ajax,时,处理,用户,