java - 如何更新 JSP 中的现有 cookie?

标签 java jsp cookies

我有一个 cookie,myCookie,它包含一个散列值。此 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;
  }
}

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

myCookie.setValue("my new value");
response.addCookie(myCookie);

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

如果我这样做:

myCookie.setValue("my new value");
myCookie.setPath(myCookie.getPath());
myCookie.setMaxAge(myCookie.getMaxAge());
response.addCookies(myCookie);

同样的事情发生了。我得到两个名称相同但属性不同的 cookie。

Cookie 对象是否不保留检索时的属性?我如何更新这个 cookie?

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

最佳答案

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

所以这个问题的答案是:你不能那样做。

关于java - 如何更新 JSP 中的现有 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5093250/

相关文章:

javascript - 如何从浏览器获取从另一个应用程序删除的 cookie

java - java中的通用类型: How to define a function with multiple different type returned

java - Android:从 .java 文件设置 strings.xml 值

java - 将我的 jsp 表单重定向到成功页面

eclipse - 未定义的属性名称(aria-hidden)

python - 带有 cookie 的 urllib2

javascript - 在我的应用程序 angular2 aspnet core 中找不到错误 angular2-cookies/core.js

java - java中的xml文件生成器

java - Play Framework 2.1 IDE 设置

mysql - SQL当前系统日期