Java 在HTTPServlet doPost()中将maxage(0)设置为cookie并重定向不会';行不通
我正在做一件很简单的事情,但就是不起作用 我有一个带有按钮的html页面,该按钮用于注销和删除登录cookie,按下时,它/在servlet中运行以下代码:Java 在HTTPServlet doPost()中将maxage(0)设置为cookie并重定向不会';行不通,java,http,cookies,Java,Http,Cookies,我正在做一件很简单的事情,但就是不起作用 我有一个带有按钮的html页面,该按钮用于注销和删除登录cookie,按下时,它/在servlet中运行以下代码: @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { deleteCookie(req, resp); resp.sen
@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
我做错什么了吗?根据,至少Internet Explorer 6、7和8不支持最大年龄
,但支持过期
。如果这是您的问题,那么我会尝试将这两个设置为:
Q.如果我在cookie中同时设置expires和max age怎么办?
答:每个支持最长使用期限的浏览器都会忽略过期日期,不管其值如何,同样,Internet Explorer也会忽略最长使用期限,而只使用过期日期
该页面还有一个指向的链接,您可能会发现该链接很有用。根据,至少Internet Explorer 6、7和8不支持最大年龄
,但支持过期
。如果这是您的问题,那么我会尝试将这两个设置为:
Q.如果我在cookie中同时设置expires和max age怎么办?
答:每个支持最长使用期限的浏览器都会忽略过期日期,不管其值如何,同样,Internet Explorer也会忽略最长使用期限,而只使用过期日期
该页面还有一个指向的链接,您可能会发现该链接很有用。IE的解决方案是,我应该为设置cookie和删除cookie设置路径
Chrome没有路径也可以。IE的解决方案是,我应该为设置cookie和删除cookie设置路径
Chrome没有路径也可以。谢谢您提供的信息。我无法验证它,因为我不知道如何在Javacookie(javax.servlet.http.Cookie)中定义“expire”选项。您可以使用LiveHTTP头、Firebug的网络面板等工具(在Firefox中)获取整个http交换。虽然这不会帮助您设置值,但它会告诉您正在交换哪些确切的cookie值,这可能会提供出问题的线索。关于Expires标记,您是对的,但我发现了真正的问题,那就是我没有设置路径。我想Java知道自己设置正确的属性,谢谢您提供的信息。我无法验证它,因为我不知道如何在Javacookie(javax.servlet.http.Cookie)中定义“expire”选项。您可以使用LiveHTTP头、Firebug的网络面板等工具(在Firefox中)获取整个http交换。虽然这不会帮助您设置值,但它会告诉您正在交换哪些确切的cookie值,这可能会提供出问题的线索。关于Expires标记,您是对的,但我发现了真正的问题,那就是我没有设置路径。我想Java知道如何设置正确的属性本身