如何更新JSP中的现有cookie?

Jam*_*ers 6 java cookies jsp

我有一个myCookie包含哈希值的cookie .此cookie设置为在一年后到期,并且路径为"/".我需要使用新的哈希值更新此cookie.当我的JSP脚本加载时,我检索cookie如下:

Cookie[] cookies = request.getCookies();
Cookie myCookie = null;

for (int i = 0; i < cookies.length; i += 1) {
  if (cookies[i].getName().equals("myCookie")) {
    myCookie = cookies[i];
    break;
  }
}
Run Code Online (Sandbox Code Playgroud)

确定需要更新cookie的值后,我执行以下操作来更新它:

myCookie.setValue("my new value");
response.addCookie(myCookie);
Run Code Online (Sandbox Code Playgroud)

检查结果,我现在有两个实例myCookie:原始版本具有正确的到期日期和路径,以及旧的无效值; 以及一个名为"myCookie"的新cookie,它在会话结束时到期,具有正确的值和JSP文档的路径.

如果我做:

myCookie.setValue("my new value");
myCookie.setPath(myCookie.getPath());
myCookie.setMaxAge(myCookie.getMaxAge());
response.addCookies(myCookie);
Run Code Online (Sandbox Code Playgroud)

同样的事情发生了.我得到两个具有相同名称和不同属性的cookie.

Cookie对象在检索时不会保留属性吗?我该如何更新此cookie?

注意:我不想修改路径或到期日期.我只想更新已设置的cookie的值.

Jam*_*ers 9

根据RFC 2965的 3.3.4节,用户代理不在发送到服务器的cookie头中包含过期信息.因此,无法更新现有cookie的值,同时保留最初仅基于与cookie关联的信息设置的到期日期.

所以这个问题的答案是:你做不到.