2014-10-03 41 views
0

我試圖弄清楚什麼時候設置了一個特定的cookie,並根據它的新值更新了一些東西。我試圖通過實施我自己的Cookie政策來實現這一點Java CookiePolicy ACCEPT_ORIGINAL_SERVER拒絕Cookie

我在HttpCookie.domainMatches方法中遇到了問題。

當我使用CookiPolicy.ACCEPT_ORIGINAL_SERVER策略時,它會拒絕多個Cookie。

Cookie具有「HostName」域(即machineName123)。這顯然是一個無效的域名。

我應該在服務器端明確設置域名嗎?

如果我能利用InetAddress的CanonicalHostName,我只是得到一個IP地址...

例如:

CookieHandler.setDefault(new CookieManager(null, new CookiePolicy() { 

     @Override 
     public boolean shouldAccept(java.net.URI uri, final java.net.HttpCookie cookie) { 
      if(CookiePolicy.ACCEPT_ORIGINAL_SERVER.shouldAccept(uri, cookie)) { 
        //custom code here 
       } 
       System.out.println("Accepting cookie uri Host: " + uri.getHost() + " name:" + cookie.getName() + " value: " + cookie.getValue() + " domain: " + cookie.getDomain() + " path: " + cookie.getPath()); 
       System.out.println("Domain matches uri: " + HttpCookie.domainMatches(cookie.getDomain(), uri.getHost())); 
       return true; 
      } 
      System.out.println("Rejecting cookie uri Host: " + uri.getHost() + " name:" + cookie.getName() + " value: " + cookie.getValue() + " domain: " + cookie.getDomain() + " path: " + cookie.getPath()); 
      System.out.println("Domain matches uri: " + HttpCookie.domainMatches(cookie.getDomain(), uri.getHost())); 
      return false; 
     }; 
    })); 

有另一種方式來確定當一個特定的Cookie會設置? (它可能發生在多個連接上),還是有另一種方式解析主機名?

謝謝!

回答

1

如果你想在cookie策略接受你需要使用預定義的cookie政策所有Cookie:

CookiePolicy.ACCEPT_ALL 

例子:

CookieManager myCustomCookieManager = new CookieManager(null, CookiePolicy.ACCEPT_ALL); 

OR

myCustomCookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL); 
+0

不幸的是,並非所有的cookies應該被接受。我最終使用ORIGINAL_SERVER策略並使用一些特殊規則來識別不是「正確」域的計算機名稱 – user1649803 2015-04-13 17:34:39