有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

jakarta ee是Java Cookie的行为。将maxage(0)设置为实现,或者是否有规范?

我有一个web应用程序运行在一个旧的修改过的Tomcat安装上。为了在注销后删除会话cookie,我有以下代码:

Cookie sessionCookie = new Cookie("session",null);
sessionCookie.setMaxAge(0);
response.addCookie(sessionCookie);

在我的web应用程序中,我遇到了一个问题,它返回当前时间作为cookie的过期部分:

Set-Cookie: sesssion=null; Expires=Sat, 18-Feb-2012 18:04:52 GMT

问题是,只需要客户端的PC稍微落后于服务器,它就可以继续发送cookie

然而,在Tomcat 5.5中,它返回:

Set-Cookie: session=null; Expires=Thu, 01-Jan-1970 00:00:10 GMT

这才是更理想的行为

我的问题是,这两个问题都是正确的,是否有任何关于如何实施的官方指南,文件只是说明:

A zero value causes the cookie to be deleted.

也许我必须自己添加Set Cookie:header来避免这种行为


共 (1) 个答案

  1. # 1 楼答案

    规范中似乎没有关于该方法实现的非常具体的内容

    然而,你不应该依赖浏览器立即删除cookie,你甚至不应该依赖浏览器删除cookie,因为从服务器上你根本无法控制客户端的行为

    你在cookie中存储了什么,你能简单地使用容器已经管理的会话吗

    在服务器上使会话无效时,即使cookie留在浏览器上,这也无关紧要,因为它将在服务器端失效,cookie中的会话ID将不再与现有会话匹配,并且绑定到该会话的对象将被销毁