我想将Ajax请求重定向到服务器端的登录页面。
我可以通过
了解请求是否是Ajax请求boolean isAjaxRequest = "XMLHttpRequest".equals(request.getHeader("X-Requested-With"));
我知道我可以在JavaScript中完成它但是有很多地方向服务器发送ajax请求。所以我必须在服务器端做这件事。我试过了;
httpResponse.redirect("...");
但它不起作用。
我该怎么做?感谢。
答案 0 :(得分:4)
简答:不。
答案很长:这是可能的,但不是你想的那样。如果需要重定向到登录页面,可能这意味着用户当前未经过身份验证。发回401 response - 这将向客户表明需要登录。
现在的诀窍是不在每个调用中处理401,而是在某个全局点处理它。例如,如果您正在使用jQuery,则可以注册global error handler并检查状态代码 - 如果它是401,则重定向到登录页面或以其他方式接受身份验证数据。
答案 1 :(得分:2)
您无法在服务器端执行此操作,因为您发送的内容始终只是AJAX响应,而您希望将整个页面/浏览器选项卡(不仅仅是AJAX请求)重定向到登录页面。
唯一的方法是在AJAX处理程序的客户端执行此操作 - 发送一些标记(例如错误状态代码),然后在Javascript中处理该标记以将整个浏览器选项卡重定向到登录页面。
答案 2 :(得分:-3)
这会将Ajax请求重定向到登录页面:
response.sendRedirect是(" /login.jsp");