session过期情况下ajax请求不会触发重新登录的问题

  • 在拦截器中添加以下逻辑
String requestType = request.getHeader("X-Requested-With");
            if (!StringUtils.isEmpty(requestType) && requestType.equalsIgnoreCase("XMLHttpRequest")) {
                response.setHeader("sessionStatus", "timeout");
                response.sendError(518, "session timeout.");
            }
  • 页面ajax配置全局函数:
//定义ajax全局事件
$(document).ajaxError(function(jqxhr, error) {
    var sessionStatus = error.getResponseHeader("sessionStatus");
    if (sessionStatus == "timeout") {
        $.MsgBox.Alert("系统提示", "您的登录信息已过期,请重新登录!", function(){
            top.location.href = "${pageContext.request.contextPath}";
        })
    }
    var operationStatus = error.getResponseHeader("operationStatus");
    if (operationStatus == "refused") {
        $.MsgBox.Alert("系统提示", "您没有权限执行该操作!", function(){
            top.location.href = contextPath;
        })
    }
});

原文地址:https://www.cnblogs.com/zhoujl-5071/p/10451903.html

时间: 2024-10-11 03:29:34

session过期情况下ajax请求不会触发重新登录的问题的相关文章

session过期情况下弹出窗口显示2个登陆页面的问题处理

根据多年的web开发经验,一般当session过期之后,当用户点击任何一个按钮之类的,都是自动跳转到登陆页面,这个在网上有很多过滤器,拦截器实现. 那么在使用类似jquery easy ui的时候,如果页面有一些弹出窗口,是在弹出了窗口再去加载地址拉数据出来的,就会出现父页面跳到登陆页面,弹出页面也跳到登陆页面. 如何解决这个问题呢,我的办法如下: 首先,在过滤器中如果是session过期的话,自动跳到登陆页面,并且带上一个固定参数,在页面index.jsp中获取这个参数,如果存在. 其实就是在

session失效,使用ajax请求数据被拦截,此时正常的处理逻辑是跳到登录界面,而不是界面没有变化(java判断是否是ajax请求)

在登录过滤器中,判断请求是ajax请求还是超链接或者地址栏变化的请求 if (httpServletReq.getHeader("x-requested-with") != null && httpServletReq.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) { JSONObject jsessiontimeout = new JSONOb

SpringMVC下Ajax请求的方法,@Responsebody如果返回的是布尔值,ajax不会接到任何回传数据

SpringMVC框架下,如果用ajax向后台请求得方法如果使用@Responsebody返回布尔值的话,ajax得不到任何的回传数据. 但是如果返回String类型,就是正常的. 测试了下代码写得没有任何问题,也不报错.只是在地址栏直接输入ajax请求的url会报404. The resource identified by this request is only capable of generating responses with characteristics not accepta

spring mvc session超时,处理ajax请求

做web开发时,当session超时时,如果不是ajax请求,很简单就能实现跳到指定的页面.但是ajax请求就会有问题.session超时的时候,点击到ajax请求就会弹出一些页面源码文件. 首先建了个拦截器,来判断session超时.用户登录后会保存用户信息在一个session里,在session的监听里,session超时会销毁保存在session里的用户信息,而拦截器就通过session里是否有用户信息来判断session超时. 拦截器是spring-mvc的拦截器,在拦截器里判断是不是a

Tomcat下ajax请求路径总结

ajax的url有两种,一种是绝对路径,另一种是相对路径. 一.绝对路径:包括协议名称.主机地址.端口.web项目名称等的完整请求路径. 例如: $.ajax({ url:"http://localhost:8080/webname/test" }); 好处:比如在webA项目中的ajax需要请求webB项目中的服务,则必须使用绝对路径. 坏处:使用绝对路径要求古地理更web项目的名称,如果webB项目重命名了,则对应的ajax请求都需要修改. 二.相对路径:不需要协议名.主机地址.端

mvc下ajax请求遇到session超时简单处理方式

转自:http://blog.csdn.net/yeyicsdn/article/details/50032787 参考网址:http://www.cnblogs.com/RachelChen/p/5433881.html 修改了前台全局ajax部分代码,如下: $(document).ajaxComplete(function (event, xhr, settings) { //通过XMLHttpRequest取得响应头,sessionstatus, var sessionstatus =

解决IE下Ajax请求无效

在做web开发是,大多时候都会使用FireFox作为调试的浏览器.上面携带的FireBug用来调试JavaScript实在是太方便了,绝大多数的问题都能够通过它跟踪调试出来.但是,当项目发布时,不能仅在这一款浏览器是运行正常就算正常了.还要做浏览器的兼容性测试.说到IE,相信很多人都会很头疼.这段时间就碰到了问题,使用Ajax去后台请求数据,在前台更新显示.开发阶段,在FireFox上一切正常.但到了测试阶段,在IE上,这个小小的功能却怎么也没法正常运行.好在,之前有所耳闻IE的这个“亮点”,于

django下ajax请求403(FORBIDDEN)的解决办法

环境 django 1.8.3 错误描述 POST http://localhost:8000/ajax_query_data/ 403 (FORBIDDEN) 解决办法 django官方文档上如下内容: https://docs.djangoproject.com/en/dev/ref/csrf/#ajax AJAX While the above method can be used for AJAX POST requests, it has some inconveniences: yo

spring mvc 下ajax请求返回值问题

$.ajax({ url:"url", data:{Value:value}, dataType:"text", success:function(data){} }) JsonArray rejs = JsonArray.fromObject(); request.setCharacterEncoding("utf-8"); //这里不设置编码会有乱码 response.setContentType("text/html;charse