我正在做一些非常簡單的工作。將maxage(0)設置爲HTTPServlet中的cookie doPost()並重定向不起作用
我對此是應該註銷並刪除登錄cookie的按鈕的HTML頁面,按下時,它/運行該代碼在servlet:
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
deleteCookie(req, resp);
resp.sendRedirect("login");
}
private void deleteCookie(HttpServletRequest req, HttpServletResponse resp) {
Cookie[] cookies = req.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if (CID_KEY_NAME.equals(cookie.getName())) {
cookie.setMaxAge(0); // Should make the browser delete the cookie
cookie.setValue(null);
resp.addCookie(cookie);
}
}
}
}
的sendRedirect("login")
送我到一個新的servlet這負責登錄,但當我到達新的servlet並檢查上面的cookie的存在時,我可以看到它存在與最大值-1 -1
我做錯了什麼?
感謝您的信息。我無法驗證它,因爲我沒有看到如何在Java Cookie(javax.servlet.http.Cookie)中定義'expire'選項。 – Ben 2011-12-19 14:09:23
您可以使用Live HTTP Headers,Firebug的網絡面板等工具(在Firefox中)來抓取整個HTTP交換。雖然這不會幫助您設置價值,但它會告訴您正在交換的cookie值是什麼,這可能會提供關於發生了什麼問題的線索。 – 2011-12-19 14:26:09
你對「過期」標籤是正確的,但我發現了真正的問題,而且我沒有設置路徑。 我猜Java知道要設置正確的屬性本身 – Ben 2011-12-19 15:02:13