2015-11-04 53 views
0

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

我能理解请求是否是一个Ajax请求或不

boolean isAjaxRequest = "XMLHttpRequest".equals(request.getHeader("X-Requested-With")); 

我知道我可以在JavaScript中做到这一点,但也有很多的发送Ajax请求到服务器的地方。所以我必须在服务器端做到这一点。我试过了;

httpResponse.redirect("..."); 

但它不起作用。

我该怎么做?谢谢。

回答

4

简答:没有。

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

现在的诀窍是不要在每个调用中处理401,而是要在某个全局点处理它。例如,如果你使用jQuery,你可以注册一个global error handler并检查状态码 - 如果它是一个401,那么重定向到登录页面或接受认证数据。

2

你不能在服务器端做到这一点,因为无论你发送的是什么,总是只是AJAX响应,而你想将整个页面/浏览器选项卡(而不仅仅是AJAX请求)重定向到登录页面。

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

-3

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

response.sendRedirect是( “/ login.jsp的”);

+1

是的,但不会触发浏览器导航到该页面。 (编辑错误推理);响应代码将被发回,然后客户端上不会发生任何事情。 – Gimby

+0

是的,这是这种情况@Gimby :( – xxlali

相关问题