2012-02-19 46 views
1

我有一個網站名稱www.goo.com,並且我在創建cookie時用於保存cookie而不聲明域名。 現在,我想添加子域foo.goo.com 我將cookie保存在域中,而不是在子域中。 有2個問題:更新現有Cookie的域名

  1. 我想刪除舊的cookie。 我試圖做'cookie.setMaxAge(0)',問題是在Firefox和鉻它不起作用。它只在IE中工作。 爲什麼?我能做些什麼呢?

  2. 當我做

    Cookie[] cookie = request.getCookies(); 
    if (cookie != null) { 
        for (int i = 0; i < cookie .length; i++) { 
         cookie[i].getDomain(); //here i get null.why? 
        } 
    } 
    

爲什麼我在getDomain()線得到空?

編輯:

我想加入這一行:

response.setContentType("text/html"); 

發送的內容類型。

我也嘗試通過響應發送cookie。

有人有另一種想法,因爲這裏的禮物有兩個問題?

+0

你試過'setDomain'嗎? – 2012-02-19 16:05:21

+0

這個cookie設置...所以他有域名。 – lolo 2012-02-19 16:10:24

+0

嘗試通過響應發送cookie? '''response.setHeader(「Set-Cookie」,name +「=」+ value +「; Max-Age =」+ maxAge +「; expires =」+ expiresTime);' – 2012-02-19 16:22:23

回答

3
  1. 在這裏找到答案:How do you remove a Cookie in a Java Servlet(你需要發送一個文本/ html內容類型)

  2. 當客戶端發送的cookie到服務器,它只發送名稱/值。其他字段僅在設置Cookie時可用。

+0

現在我正在嘗試第1部分...謝謝! – lolo 2012-02-19 16:18:33

+0

它不工作...也許你有另一個想法? – lolo 2012-02-19 16:49:24

+0

第二個答案應該是正確的。至於第一個,我從來沒有使用Java servlets,我不知道爲什麼Firefox和Chrome不遵守過期的領域。一個可能的問題(IIRC)是所有字段(路徑,域名,安全等)必須匹配才能被擦除,而不是創建另一個立即被刪除的cookie。 – AlexanderZ 2012-02-21 02:27:56