使用 Java 过滤器从子域中删除基域 cookie

Remove base domain cookies from a subdomain using Java filter

我正在创建一个从域 test.example.com 托管的 Java 过滤器,它将根据它们的名称删除某些 cookie(禁止的 cookie 名称列表存储在过滤器的初始配置中)。

现在,我有来自另一个站点的 cookie,该站点的域属性设置为 。example.com。其中一些 cookie 需要 blocked/removed 我正在开发的过滤器。

我阅读了在线文章,包括一些与 cookie 域匹配相关的 Whosebug 帖子。我很确定这些具有域属性 .example.com 的 cookie 应该可以从子域 test.example.com 访问。事实上,使用调试我可以验证是否能够访问这些 cookie。但是,我在通过调用 setMaxAge(0) 删除它们并通过 addCookie 将其添加回响应时遇到问题。事实证明,cookie 正在复制,而不是被删除。

我想知道是否可以从 [=39= 中删除具有域属性 .example.com(基域)的 cookie ](子域)。或者只有当我仅从基域执行我的 Java 过滤器时才可能删除 cookie - 即 example.com?

这是我的代码片段:

if (cookieBlockList != null) {
    Cookie[] cookies = httpRequest.getCookies();
    for (int i=0; i < cookies.length; i++) {
        String cookieName = cookies[i].getName();

        for(int j=0; j < cookieBlockList.length; j++) {
            if (cookieName.equalsIgnoreCase(cookieBlockList[j])) {
                Cookie cookie = new Cookie(cookieName, "");
                cookie.setMaxAge(0);
                httpResponse.addCookie(cookies[i]);
            }
        }
    }
}
filterChain.doFilter(request, response);

在您的代码中创建了一个新的 cookie,但尚未使用。将其添加到响应中(而不是 cookies[i])。尝试设置 cookie 的域以匹配请求中的域:

Cookie cookie = new Cookie(cookieName, "");
cookie.setDomain(cookies[i].getDomain());
cookie.setMaxAge(0);
httpResponse.addCookie(cookie);