2012-04-26 47 views
0

我試圖刪除我擁有的GWT應用程序中的cookie。我第一次嘗試使用Cookies.removeCookie,但它似乎沒有任何效果。我很確定這是因爲removeCookie不允許你指定域和路徑。當我將它設置爲使用GWT時代的Cookie時,會將其設置爲「Session」

我想通過設置cookie在紀元時間到期,但是當我檢查鉻的開發工具時,cookie的到期時間設置爲「會話」,它不會立即按照我的預期被刪除。

這是我正在使用的。我使用的是我設置cookie時使用的相同參數,唯一的區別是值和日期。

boolean secureCookie = "https:".equalsIgnoreCase(Window.Location.getProtocol()); 
Cookies.setCookie("cookieName", "", new Date(0), null, "/", secureCookie); 
+0

cookie有沒有可能被設置爲純http?如果是這樣,你的GWT客戶端應用程序將不被允許修改或刪除它。 – 2012-04-26 17:01:28

+0

@ColinAlworth:你能澄清一下嗎?我不確定你在問什麼(可能是我在這方面缺乏經驗)。如果這就是你的意思,這個cookie被設置爲一個安全的cookie。 – Daenyth 2012-04-27 04:39:49

+0

安全意味着它只會被髮送給使用https的客戶端 - 但瀏覽器的js仍然可以訪問它。相比之下,Http-only是一種防止可能的會話劫持的方式,通過防止JS應用程序根本無法讀取它,並且無法修改它。考慮發佈你如何設置cookie,以便我們獲得更多信息。 – 2012-04-27 13:56:57

回答

0

好像在

boolean secureCookie = "https:".equalsIgnoreCase(Window.Location.getProtocol()); 

你有後流浪: 「https」 開頭(因爲Window.Location.getProtocol()大概會返回 「https」 開頭,而不是 「https:」 開頭)。所以,你不能設置該cookie爲「安全」,並且結果相當期待。

+0

這不是事實。查看chrome的開發工具顯示cookie確實設置爲安全。即使它不安全,預計如何設置到會話的到期時間而不是我指定的日期? – Daenyth 2012-05-07 15:35:57

+0

它可能是原始cookie設置的效果嗎?看看[這個GWT測試代碼](http://code.google.com/p/gwt-test-utils/source/browse/src/framework/branches/gwt-test-utils-0.25-branch/gwt-test -utils/src/test/java/com/octo/gwt/test/LocationTest.java?spec = svn1205&r = 1205#17),我看到'assertEquals(「http」,Location.getProtocol())這一行。 ' - 沒有結尾的冒號......) – 2012-05-07 15:38:19

+0

我可以仔細檢查,但是cookie的設置方式都是相同的 - 所以參數也是一樣的。編輯:再次檢查,cookie被添加爲「安全」。 – Daenyth 2012-05-07 15:41:31

相關問題