遇到的情景是在当前端发送ajax请求到后端,后端有拦截器拦截了该请求,但是拦截后不会执行跳转的代码,没有拦截器这个方法同样有用。
步骤:
思路:我们在响应头中自定义一个信息,前端拿到这个信息后就执行跳转代码。
后端代码:
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
..... 拦截逻辑省略
if(!queryToken.equals(token)){
//告诉ajax要重定向
response.setHeader("REDIRECT","true");
//ip为服务器ip地址,在此用ip代指
return false;
}
response.sendRedirect(request.getContextPath()+"/user/loginPage");
return false;
前端:
重点;var redirect = xhr.getResponseHeader(“REDIRECT”);
$.ajax({
async:true,
url:"/collect/deleteCollect",
data:{
userId: userId,
bookId: bookId
},
type:"get",
success:function (data,status,xhr) {
// 获取指定响应头
var redirect = xhr.getResponseHeader("REDIRECT");
if(redirect === "true"){
window.location.href = "/user/loginPage";
}
if(data.status === 200){
swal("取消收藏成功",data.message,"success").then(function (){
window.location.reload();
});
} else {
swal("取消收藏失败",data.result,"error");
}
}
})
2076

被折叠的 条评论
为什么被折叠?



