【发布时间】:2016-08-09 18:34:57
【问题描述】:
我正在创建一个托管自域 test.example.com 的 Java 过滤器,它将根据其名称删除某些 cookie(被禁止的 cookie 名称列表存储在过滤器的初始化配置中)。
现在,我有来自另一个站点的 cookie,这些站点的域属性设置为 .example.com。我正在开发的过滤器需要阻止/删除其中一些 cookie。
我已阅读在线文章,包括一些与 cookie 域匹配相关的 stackoverflow 帖子。我很确定这些具有域属性 .example.com 的 cookie 应该可以从子域 test.example.com 访问。事实上,使用调试我可以验证是否能够访问这些 cookie。但是,我通过调用setMaxAge(0) 并通过addCookie 将其添加回响应来删除它们时遇到问题。事实证明 cookie 被复制了,而不是被删除了。
我想知道是否可以从 test.example.com(子域)中删除具有域属性 .example.com(基本域)的 cookie。或者只有在我仅从基本域执行我的 Java 过滤器时才可能删除 cookie - 这是 example.com?
这是我的代码的 sn-p:
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);
【问题讨论】:
标签: java cookies servlet-filters