繁体   English   中英

302重定向后的HTTP Referer

[英]HTTP Referer after 302 Redirect

我正在使用Java servlet创建一个网站,我有一个名为LogIn的页面。 我想要发生的是,一旦用户成功填写登录表单,它就会将它们返回到之前所在的页面。

现在,这可以通过GET或来自另一个页面的POST工作,因为前一页存储在Referer头中。 但是当我重定向(302)到LogIn页面时(从用户因为未登录而无法访问的页面),Referer标头为空。

当用户被重定向到LogIn页面时,有没有办法实现我想要的?

我不相信referer标题,因为你依赖浏览器它是否已被发送。 而是根据当前请求URI自己提供。

response.sendRedirect("login?from=" + URLEncoder.encode(request.getRequestURI(), "UTF-8"));

然后在登录表单中

<form action="login" method="post">
    <input type="text" name="username">
    <input type="password" name="password">
    <input type="hidden" name="from" value="${param.from}">
    <input type="submit">
</form>

然后在登录操作中

User user = userDAO.find(username, password);
if (user != null) {
    session.setAttribute("user", user);
    response.sendRedirect(request.getParameter("from"));
} else {
    request.setAttribute("error", "Unknown login");
    request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response);
}

更新 :或者如果您想要无参数(根据您对其他答案的评论),(ab)使用会话。

session.setAttribute("from", request.getRequestURI());
response.sendRedirect("login");

然后在登录操作中

response.sendRedirect((String) session.getAttribute("from"));
session.removeAttribute("from");

您可能只想将当前页面附加为GET参数,即http://yoursite.com/login?redir=/topics,以便在您的auth servlet中,如果用户没有相应的凭据,则只需获取当前页面uri,附加到登录URL并重定向。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM