ajax请求

Java中解决(extjs或jquery)session过期退出登录问题

*爱你&永不变心* 提交于 2019-12-04 02:11:01
解决两种情况下的用户访问超时: a)普通http请求的session超时; b)异步http请求的session超时,如果使用extjs后大部分的界面刷新都是异步的ajax请求。 不管是那种类型的http请求总是可以由一个过滤器来捕捉。 分类:普通http请求的header参数中没有x-requested-with:XMLHttpRequest头信息,而异步的有。 其实对于常见的ajax框架,header中还有标示自己身份的header信息。 对于普通的http请求,发现session超时后直接重定向到一个超时页面,显示访问超时。 对于异步http请求,发现session超时后则向请求的response中写入特定的超时头信息,客户端ajax对象检测 头信息,发现有超时状态标志后调用显示超时信息的javascript方法,提示用户访问超时。 服务器端session超时后在过滤器中为response添加新的头信息,标记该请求超时: if(r.getHeader("x-requested-with")!=null && r.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){ response.setHeader("sessionstatus","timeout"); } 使用Ext

spring mvc session超时,处理ajax请求

℡╲_俬逩灬. 提交于 2019-12-03 19:10:06
做web开发时,当session超时时,如果不是ajax请求,很简单就能实现跳到指定的页面。但是ajax请求就会有问题。session超时的时候,点击到ajax请求就会弹出一些页面源码文件。 首先建了个拦截器,来判断session超时。用户登录后会保存用户信息在一个session里,在session的监听里,session超时会销毁保存在session里的用户信息,而拦截器就通过session里是否有用户信息来判断session超时。 拦截器是spring-mvc的拦截器,在拦截器里判断是不是ajax请求: public class LoginInterceptor extends HandlerInterceptorAdapter{ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { Object obj = request.getSession().getAttribute(SecurityConstants.LOGIN_USER); if (null == obj) { //未登录 if (request.getHeader("x-requested-with") != null &&

PHP中解决ajax请求session过期退出登录问题

风格不统一 提交于 2019-12-02 22:37:17
PHP判断一个请求是Ajax请求还是普通请求 1、 session过期,如果直接是url请求,或者用户在打开的系统页面中直接清除缓存及cookie信息,可直接在php的入口文件中调用以下封装的方法,进行session信息判断以及页面的跳转,如: if(empty($_SESSION['sessionid']) || empty($_COOKIE['PHPSESSID'])){ echo "<script>"; echo "alert('用户过期,请重新登陆!');"; echo "parent.window.parent.window.location.href = '/index.php';"; echo "</script>"; } 2、 如果是页面保持着,但是10分钟之内没有做任何操作,页不知道是否过期,点击操作按钮,例如保存等,ajax请求已经进行,将会把页面的html打印出来,不能正常的弹出提示窗口,跳转到登陆页。 项目中进行ajax请求的操作很多,ajax的操作已经进行不能中断,不可能在每个ajax请求中都调用我们封装好的判断session是否过期的逻辑,将增加工作负担。我考虑在php的入口代码中调用已经封装好的session过期判断,其返回标识如 echo "timeout";exit; 在引用的jquery.js库中找到.ajax中调用的done方法

PHP判断一个请求是Ajax请求还是普通请求

廉价感情. 提交于 2019-12-01 14:48:14
Javascript中大多数的框架如 jquery(jquery ui、jquery easyui)、Mootools 等,在发出 Ajax 请求时,都会发送额外的 HTTP_X_REQUESTED_WITH 头部信息,因此每当发送一个ajax请求你就可以在服务器端侦测到是 Ajax 请求; 1、通过传递_GET参数的方法简单实现网页请求的判断。 url上这么传递:*******.php?ajax php这么判断: if(isset($_GET['ajax'])){ ...这是一个ajax请求,然后... } else{ ...这不是一个ajax请求,然后... } 这种实现方法很差劲,相当容易容易容易伪造。判断和不判断没有任何区别。 所以又出来一种自认为很科学的处理方式,这种方式确实有一定的学习价值。 2、通过PHP获取预定义变量中的XMLHttpRequest判读。 首先你必须使用jquery或Js发送ajax请求,通过jquery发送的$.ajax, $.get or $.post方法请求网页内容时,它会向服务器传递一个HTTP_X_REQUESTED_WITH的参数,这个参数的值是XMLHttpRequest。 代码: beforeSend : function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("X