ajax请求session过期失效被拦截的解决

前端之家收集整理的这篇文章主要介绍了ajax请求session过期失效被拦截的解决前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

通常使用过滤器 或拦截器来进行判断session或cookies里是否失效从而@R_449_404@面,通常普通连接请求实现如下:

    @H_301_16@UserInfouser=(UserInfo)request.getSession().getAttribute("user");
  1. if(user==null){
  2. @H_301_16@response.sendRedirect("/login.html");
  3. }

对于一个普通的页面没什么问题,但通过ajax请求拦截后却无法实现跳转,扑捉到登录的源代码,在网上查了很多资料
方法也是众说纷纭,有的ajaxSetup设置全局 后台拦截器中通过请求头部信息判断是否ajax请求然后返回参数判断,
有的则是修改jquery ajax源码,太多了


查了资料搞了个最简单的后台不用判断前台 使用一个最方便的做了一次扩展 重写ajax方法实现前置处理,代码如下:
    @H_301_16@jQuery(function($){
  1. //备份jquery的ajax方法
  2. @H_301_16@var_ajax=$.ajax;
  3. //重写ajax方法,先判断登录在执行success函数
  4. @H_301_16@$.ajax=function(opt){
  5. var_success=opt&&opt.success||function(a,b){};
  6. @H_301_16@var_opt=$.extend(opt,{
  7. success:function(data,textStatus){
  8. @H_301_16@//如果后台将请求重定向到了登录页,则data里面存放的就是登录页的源码,这里需要找到data是登录页的证据(标记)
  9. if(data!='[objectObject]'&&data.indexOf('weidenglu')!=-1){
  10. @H_301_16@window.location.href="gz.html";
  11. return;
  12. @H_301_16@}
  13. _success(data,textStatus);
  14. @H_301_16@
  15. }
  16. @H_301_16@});
  17. _ajax(_opt);
  18. @H_301_16@};
  19. });
将其代码写到 一个通用的js文件页面调用一下即可 ,每个ajax执行之前都会执行它,data!='[object Object]' data.indexOf('weidenglu'), data 返回值如果是 判断里面是否存在weidenglu ,weidenglu在你的login.html页面中写上一个隐藏域即可 因为一旦被拦截登录返回的就是登录代码

猜你在找的Ajax相关文章