簡體   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