针对ajax和ServletFiter结合使用时出现拦截请求但页面不跳转的问题解析以及解决方案

在实现登录拦截过程中,发现Ajax请求与ServletFilter配合时,只有部分请求能根据重定向响应跳转。分析指出,Ajax请求通过回调函数处理响应,不同于``标签的直接跳转。解决方案是,在未登录情况下,Filter修改响应头添加特定参数,Ajax接收到响应后检查该参数并执行跳转操作。具体实现涉及ServletFilter的配置和Ajax的ajaxSetup方法使用。
摘要由CSDN通过智能技术生成

最近在做登录拦截,发现拦截器拦截网页请求后,一部分请求会进行会对修改后response的重定向路径做出反应进行跳转,但是有一部分不会。

仔细区分之后发现,只有‘<a href=>‘的会根据response重定向的路径进行跳转,但是来自ajax以及boostrap-table的ajax请求就不会。

在博主仔细思考之后发现,ajax是存在回调函数接收返回来的response在作出相应处理,和<a>不同,因此对拦截器没有反应。如下图(假设当前情况为未登录,因此拦截器会修改响应头指向C页面也就是登录页面)

  • <a>请求
    在这里插入图片描述
  • ajax请求
    在这里插入图片描述
    由上面两图对比之后,可以看见明显的区别是ajax在调用完Controller之后会执行回调函数也就是所谓的success或者error方法。因此对接收回来的C页面数据不会做出响应。

因此,针对以上思路,博主得到了以下的解决思路,就是当判断当前用户未登录成功的时候,给响应头添加一个参数,返回给ajax,然后ajax每次接收数据时候都判断相应的响应头是否存在该参数,如果存在则跳转。

  • ServletFiter

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值