2016-08-09 41 views
0

我正在創建一個域名爲的Java過濾器test.example.com,它將根據名稱刪除某些cookie(禁止的cookie名稱列表存儲在過濾器的init配置)。使用Java篩選器從子域中刪除基礎域Cookie

現在,我的Cookie來自其他網站,其域名屬性設置爲.example.com。其中一些Cookie需要被我正在開發的過濾器阻止/刪除。

我已閱讀在線文章,其中包括一些與cookie域匹配相關的stackoverflow帖子。我很確定這些具有域屬性.example.com的cookie應該可以從子域test.example.com訪問。事實上,使用調試我可以驗證是否能夠訪問這些cookie。但是,在調用setMaxAge(0)並通過addCookie將其添加回響應中時,我遇到問題。事實證明,Cookie正在被複制,而不是被刪除。

不知是否是以往任何時候都可能與域屬性.example.com的(基本域)從test.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); 

回答

1

一個新的Cookie在你的代碼中創建的,但它的使用。將其添加到響應中(而不是cookies[i])。嘗試設置Cookie的域名以匹配請求中的域名:

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

將嘗試這一項。謝謝 – Ish