本文实例讲述了JS Ajax请求会话过期处理问题解决方法。分享给大家供大家参考,具体如下:
对于页面来说,处理会话过期比较简单,一般只需在过滤器里面判断会话用户是否存在,不存在则跳转页面到登陆页即可。
对于Ajax请求来说,这个办法则无效,只能获取到登录页的html代码。原因在于Ajax请求是<代码> XMLHTTPRequest> 代码对象发起的而不是浏览器,而服务器返回的信息接收者也是<代码> XMLHTTPRequest> 代码,非浏览器。
<>强服务器端强>
可在返回的<代码> ResponseHeader> 代码里添加一个标识变量,以便在Javascript里处理。以Java为例,可在过滤器里进行如下处理:
尝试{//Ajax请求会话过期处理 字符串requestType=request.getHeader (“X-Requested-With”); 如果(StringUtils.isNotEmpty (requestType),,requestType.equalsIgnoreCase (XMLHttpRequest)) { 响应。setHeader (“SessionStatus”、“sessionTimeOut”); requestContext.abortWith (Response.status (401) .build ()); 返回; }//处理页面跳转 .build requestContext.abortWith (Response.accepted () ()); response.sendRedirect (loginPath); }捕捉(IOException ex) {//什么都不做 } >之前<强> Javascript端强>
可通过JQuery的<代码> ajaxComplete 代码>方法进行处理,判断发送请求时是否会话已过期。
/* * * ajax请求判断会话是否已过期 */美元(文档)。ajaxError(函数(事件、jqXHR选项,errorMsg) { var sessionStatus=jqXHR.getResponseHeader (“sessionStatus”); 如果(sessionStatus,,sessionStatus===sessionTimeOut) { alert("您的会话已过期,请重新登录”); 的位置。href=" https://www.yisu.com/zixun/login "; } }); >之前更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript ajax中操作技巧总结》,《JavaScript错误与调试技巧总结》,《JavaScript数据结构与算法技巧总结》,《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
JS Ajax请求会话过期处理问题解决方法分析