使用 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);
我正在创建一个从域 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);