gpt4 book ai didi

java - Java Cookie.setMaxAge(0) 的行为取决于实现还是有规范?

转载 作者:行者123 更新时间:2023-11-28 23:06:02 30 4
gpt4 key购买 nike

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

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

在我的网络应用程序中,我遇到了一个问题,它返回当前时间作为 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 才能解决此问题?

最佳答案

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

但是,您永远不应该依赖浏览器立即删除 cookie,您甚至根本不应该依赖浏览器删除 cookie,因为从服务器端您根本无法控制客户端的行为。

你在那个 cookie 中存储了什么,你可以简单地使用已经由容器管理的 session 吗?

当您使服务器上的 session 无效时,即使 cookie 保留在浏览器上也无所谓,因为它将在服务器端失效并且 cookie 中的 session ID 将不再与现有 session 匹配,并且被删除的对象绑定(bind)到该 session 的将被销毁。

关于java - Java Cookie.setMaxAge(0) 的行为取决于实现还是有规范?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9343844/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com