Jit*_*han 5 java cookies servlets java-ee
从servlet,我如何设置一个永不过期的cookie?
我试过这样做:
Cookie cookie = new Cookie("xyz","");
cookie.setMaxAge(-1);
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,它会在用户关闭浏览器后立即过期.
Jas*_*n C 13
如果您setMaxAge()使用负数拨打电话(或根本不拨打电话),则Cookie将在用户的浏览器会话结束时到期.从文档:
负值表示cookie不会持久存储,并在Web浏览器退出时被删除.
"永不"过期的cookie的典型方法是将到期时间设置为未来的一些远期.例如:
cookie.setMaxAge(60 * 60 * 24 * 365 * 10);
Run Code Online (Sandbox Code Playgroud)
将未来的过期时间设定为10年.用户很可能会在未来10年内清除他们的cookie(或者可能只是获得一台新计算机),因此这与指定它永远不会过期有效.
请记住,cookie实际上并没有"最大年龄"的概念; 实际实现的方式是Java将指定的秒数添加到服务器的当前系统时间,然后将该时间作为cookie的到期时间发送.因此,服务器时间和客户端时间之间的大量不匹配会使事情变得复杂 - 您可以做的最好(至少,很容易)确保正确设置服务器时钟并希望设置客户端的时钟.
设置最长期限:您可以使用 setMaxAge 来指定 cookie 的有效时间(以秒为单位)。以下将设置一个 24 小时的 cookie。
cookie.setMaxAge(60*60*24);
Run Code Online (Sandbox Code Playgroud)