如何在Java中将Ajax请求重定向到登录页面

时间:2015-11-04 08:33:57

标签: java httprequest ajax-request

我想将Ajax请求重定向到服务器端的登录页面。

我可以通过

了解请求是否是Ajax请求
boolean isAjaxRequest = "XMLHttpRequest".equals(request.getHeader("X-Requested-With"));

我知道我可以在JavaScript中完成它但是有很多地方向服务器发送ajax请求。所以我必须在服务器端做这件事。我试过了;

httpResponse.redirect("...");

但它不起作用。

我该怎么做?感谢。

3 个答案:

答案 0 :(得分:4)

简答:不。

答案很长:这是可能的,但不是你想的那样。如果需要重定向到登录页面,可能这意味着用户当前未经过身份验证。发回401 response - 这将向客户表明需要登录。

现在的诀窍是不在每个调用中处理401,而是在某个全局点处理它。例如,如果您正在使用jQuery,则可以注册global error handler并检查状态代码 - 如果它是401,则重定向到登录页面或以其他方式接受身份验证数据。

答案 1 :(得分:2)

您无法在服务器端执行此操作,因为您发送的内容始终只是AJAX响应,而您希望将整个页面/浏览器选项卡(不仅仅是AJAX请求)重定向到登录页面。

唯一的方法是在AJAX处理程序的客户端执行此操作 - 发送一些标记(例如错误状态代码),然后在Javascript中处理该标记以将整个浏览器选项卡重定向到登录页面。

答案 2 :(得分:-3)

这会将Ajax请求重定向到登录页面:

response.sendRedirect是(" /login.jsp");