前端代码,在全局页面中写道:
<script type="text/javascript">
$.ajaxSetup({
//设置ajax请求结束后的执行动作
complete : function(XMLHttpRequest, textStatus) {
// 通过XMLHttpRequest取得响应头,sessionstatus
var sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus");
if (sessionstatus == "TIMEOUT") {
Tip.info("长时间未操作,正在前往登录页...");
setTimeout(function(){ //使用 setTimeout()方法设定定时2000毫秒
var win = window;
while (win != win.top) {
win = win.top; // 避免弹框层中转向登录页的情况
}
win.location.href = XMLHttpRequest.getResponseHeader("CONTEXTPATH");
},2000);
}
}
});
</script>
后台代码,在拦截请求时写道:
String type = request.getHeader("X-Requested-With");
if (StringUtils.equals("XMLHttpRequest", type)) {
// ajax请求
response.setHeader("SESSIONSTATUS", "TIMEOUT");
response.setHeader("CONTEXTPATH", redirectUrl);
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
} else {
response.sendRedirect(redirectUrl);
}
// redirectUrl就是你要重定向的路径
假如你这样写还是不能跳转的话,那你就继续去找解决办法吧!