【问题标题】:Update domain of existing cookie更新现有 cookie 的域
【发布时间】:2012-03-10 04:16:08
【问题描述】:

我有一个网站名称 www.goo.com,我曾经在创建 cookie 时不声明域名就保存 cookie。 现在,我想添加子域 foo.goo.com 我将cookie保存在域中而不是子域中。 有两个问题:

  1. 我想删除旧的 cookie。 我已经尝试过 'cookie.setMaxAge(0)' ,问题是在 Firefox 和 chrome 中它不起作用。它只在 IE 中工作。 为什么?我能做些什么呢?

  2. 当我这样做时

    Cookie[] cookie = request.getCookies();
    if (cookie != null) {
       for (int i = 0; i < cookie .length; i++) {
           cookie[i].getDomain();   //here i get null.why?
       }
    }
    

为什么我在 getDomain() 行中得到 null?

编辑:

我尝试添加这一行:

response.setContentType("text/html");

发送内容类型。

我也尝试通过响应发送 cookie。

对于这里提出的 2 个问题,有人有其他想法吗?

【问题讨论】:

  • 这个 cookie 被设置了......所以他有域。
  • 尝试通过响应发送cookie? response.setHeader("Set-Cookie", name + "=" + value + "; Max-Age=" + maxAge + "; expires=" + expiresTime);
  • 和 addcookie 一样吗?什么是过期?
  • 是的,是一样的。关于max-ageexpiresen.wikipedia.org/wiki/HTTP_cookie#Expires_and_Max-Age,随便用一个就行了..

标签: java cookies dns


【解决方案1】:
  1. 这里回答:How do you remove a Cookie in a Java Servlet(需要发送text/html内容类型)

  2. 当客户端向服务器发送 cookie 时,它​​只发送名称/值。其他字段仅在设置 cookie 时可用。

【讨论】:

  • 第二个答案应该是正确的。至于第一个,我从未使用过 java servlet,也不知道为什么 Firefox 和 Chrome 不遵守 expire 字段。一个可能的问题 (IIRC) 是所有字段(路径、域、安全等)必须与要删除的 cookie 匹配,而不是创建另一个立即删除的 cookie。
猜你喜欢
  • 2017-06-13
  • 2011-07-02
  • 1970-01-01
  • 2011-06-22
  • 2019-02-22
  • 2014-09-01
  • 2012-02-26
  • 2018-06-30
相关资源
最近更新 更多