【问题标题】:Sharing sub domain cookies共享子域 cookie
【发布时间】:2012-02-11 20:41:27
【问题描述】:

我有一个域“www.foo.com”,我想创建子域“test.foo.com”。 为了合并这 2 个域以仅共享一个 cookie,我将 cookie 设置为:

Cookie cookie = new Cookie("myCookie", "myValue");
cookie.setMaxAge(60 * 60);
cookie.setDomain(".foo.com");

所以从现在开始将只有一个 cookie:“foo.com”,并且值将保存在同一个 cookie 上。 问题出在老用户身上,对他们来说会有两个 cookie('www.foo.com' 和 'foo.com'),如何将这两个 cookie 合并为一个??

还有一点,来自“test.foo.com”的用户最终会访问“www.foo.com”,反之亦然。

【问题讨论】:

    标签: java jakarta-ee servlets cookies subdomain


    【解决方案1】:

    从 http servlet 请求中获取旧 cookie,然后将其最大年龄设置为 0。这将触发客户端将其删除(在其自己的时间,通常立即)。另外,请参阅Cookie 上的 Javadoc。

    setMaxAge

    公共无效 setMaxAge(int 到期) 设置此 Cookie 的最大期限(以秒为单位)。 正值表示 cookie 将在几秒后过期 已经通过。请注意,该值是 cookie 过期的最大年龄, 不是 cookie 的当前年龄。 负值表示 cookie 不是永久存储的,而是 Web 浏览器退出时删除。零值会导致 cookie 被删除。 参数: expiry - 一个整数,以秒为单位指定 cookie 的最长期限; 如果为负,则表示不存储 cookie;如果为零,则删除 cookie 另见: 获取最大年龄()

    您将需要解析您的 cookie 并搜索您想要删除的那个。像这样的:

    final Cookie[] cookies = request.getCookies();
    for(Cookie cookie: cookies) {
        if("www.foo.com".equals(cookie.getDomain()) cookie.setMaxAge(0);
    }
    

    【讨论】:

    • 感谢您的快速回复,但您能否说明当我有 2 个 cookie('foo.com' 和 'www. foo.com')?
    猜你喜欢
    • 1970-01-01
    • 2016-05-18
    • 2011-11-27
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 2013-08-31
    • 2013-03-19
    相关资源
    最近更新 更多