解决拦截器对ajax请求的拦截实例详解


Posted in Javascript onDecember 21, 2016

解决拦截器对ajax请求的的拦截

拦截器配置:

public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object obj) throws Exception {
    
    //获取判定登陆的session是否存在
    String token = (String) request.getSession().getAttribute("token");
    String postId = (String) request.getSession().getAttribute("postId");
    if(token == null || token == ""){
      String XRequested =request.getHeader("X-Requested-With");
      if("XMLHttpRequest".equals(XRequested)){
        response.getWriter().write("IsAjax");
      }else{
        response.sendRedirect("/m-web/user/toLogin");
      }
      return false;
    }
    if(postId == null || postId == ""){
      String XRequested =request.getHeader("X-Requested-With");
      if("XMLHttpRequest".equals(XRequested)){
        response.getWriter().write("IsAjax");
      }else{
        response.sendRedirect("/m-web/user/toLogin");
      }
      return false;
    }
    return true;
  }

1、判断 String XRequested =request.getHeader("X-Requested-With") 的值,目的是判断是否是ajax请求。

2、response.getWriter().write("IsAjax");写出一个响应的数据给ajax,这样就可以在ajax里面做判断

判断的方式存在两种方式:

1)直接在ajax里面做判断(不建议)

success:function(data){
  if(data == "IsAjax"){
    window.location.href="m-web/user/toLogin"
    return;
  }
}

2)改ajax源码然后在做压缩,是针对全局的方式来修改的(建议)

 if ( isSuccess ) {// if no content
        if ( status === 204 || s.type === "HEAD" ) {
          statusText = "nocontent";

        // if not modified
        } else if ( status === 304 ) {
          statusText = "notmodified";

        // If we have data, let's convert it
        } else {
          statusText = response.state;
          success = response.data;
          error = response.error;
          isSuccess = !error;
          //解决ajax拦截问题
          var result = responses.text;
          if(result.indexOf("IsAjax")>=0){
            window.location.href="m-web/user/toLogin";
            return;
          }
        }
      }

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
Sep 21 Javascript
js点击更换背景颜色或图片的实例代码
Jun 25 Javascript
详解JavaScript中数组和字符串的lastIndexOf()方法使用
Mar 13 Javascript
JavaScript基于原型链的继承
Jun 22 Javascript
domReady的实现案例
Nov 23 Javascript
JavaScript原生数组Array常用方法
Apr 06 Javascript
Javascript防止图片拉伸的自适应处理方法
Dec 26 Javascript
详解vue项目中如何引入全局sass/less变量、function、mixin
Jun 02 Javascript
vue项目开发中setTimeout等定时器的管理问题
Sep 13 Javascript
微信小程序和百度的语音识别接口详解
May 06 Javascript
Vue内部渲染视图的方法
Sep 02 Javascript
Nuxt.js nuxt-link与router-link的区别说明
Nov 06 Javascript
原生的强大DOM选择器querySelector介绍
Dec 21 #Javascript
懒加载实现的分页&&网站footer自适应
Dec 21 #Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
Dec 21 #Javascript
Vue.js 递归组件实现树形菜单(实例分享)
Dec 21 #Javascript
详解jQuery选择器
Dec 21 #Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
Dec 21 #Javascript
js实现可输入可选择的select下拉框
Dec 21 #Javascript
You might like
Yii数据读取与跳转参数传递用法实例分析
2016/07/12 PHP
php实现批量修改文件名称的方法
2016/07/23 PHP
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
关于图片的预加载过程中隐藏未知的
2012/12/19 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
jQuery使用ajaxSubmit()提交表单示例
2014/04/04 Javascript
Javascript基础教程之if条件语句
2015/01/18 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
node+express制作爬虫教程
2016/11/11 Javascript
基于AngularJS实现的工资计算器实例
2017/06/16 Javascript
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
vue2.0 路由不显示router-view的解决方法
2018/03/06 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
详解一个基于react+webpack的多页面应用配置
2019/01/21 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
部署Python的框架下的web app的详细教程
2015/04/30 Python
Python中的ctime()方法使用教程
2015/05/22 Python
用python实现对比两张图片的不同
2018/02/05 Python
Python 数据处理库 pandas进阶教程
2018/04/21 Python
Python简单读写Xls格式文档的方法示例
2018/08/17 Python
Python根据服务获取端口号的方法
2019/09/25 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
2019/12/09 Python
简单了解django处理跨域请求最佳解决方案
2020/03/25 Python
python中numpy数组与list相互转换实例方法
2021/01/29 Python
详解如何用HTML5 Canvas API控制图片的缩放变换
2016/03/22 HTML / CSS
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
百联网上商城:i百联
2017/01/28 全球购物
捷克领先的户外服装及配件市场零售商:ALPINE PRO
2018/01/09 全球购物
道路建设实施方案
2014/03/18 职场文书
建设工程授权委托书
2014/09/22 职场文书
护士个人年终总结
2015/02/13 职场文书
浅谈PHP7中的一些小技巧
2021/05/29 PHP