在web系统中,身份校验是经常使用的方式。登陆页面,是为用户提供登陆的入口。可是,有的时候,咱们使用ajax操做的时候,因为得不到正确的数据信息,而使页面停留不能跳转到登陆页面。其实,http协议的请求头能够帮咱们轻松解决这个问题。 html
在JavaEE的规范中,拦截器,是咱们对资源请求的一种过滤方式,而对于安全页面的身份校验,咱们也采用了这样的方式。一般状况下,咱们在拦截器中,获取匿名用户要请求的页面是须要身份校验,那么咱们须要跳转到登陆页面,提示用户输入用户信息。 java
可是,因为ajax采用异步加载数据信息,获取的为text、json、xml等格式数据。这个时候,当我从服务器响应到客户端的若是是登陆页面。ajax是没法正确解析这个页面信息,因而就会出现以下现象:
1. 在弹出层中加载出登陆页面
2. 没法识别json、xml数据(html不是数据信息) jquery
其实,在拦截器中,咱们能够经过HttpServletRequest对象,读取Header信息就能够区分,当前请求是ajax仍是普通请求。基于jquery的ajax,在请求头中有以下配置:
web
X-Requested-With:XMLHttpRequest
那么,咱们能够经过 ajax
request.getHeader("X-Requested-With");
当咱们判断是ajax请求的时候,咱们响应到客户端的信息就作一下处理。告诉ajax,你须要跳转登陆页面。 json
固然,到如今,咱们的工做并无结束,咱们还须要设置一下$.ajaxSetup(),具体配置以下: 安全
$.ajaxSetup({ timeout: 3000, // 超时时间 error: function(xhr, status, msg) { // 这里能够从xhr中读取,服务器响应回来的数据信息 } });
经过ajaxSetup能够在全局设置jquery的ajax属性,避免,每个ajax单独配置。 服务器