2012-06-18 51 views
18

我想將用戶點擊的數據存儲在一個不需要去服務器的cookie中。它就像會話添加的數據一樣,我想持續保留會話,因爲數據只是不斷添加到cookie中,並且存儲了很長時間,並且只有在用戶刪除瀏覽歷史記錄時纔會被刪除。該cookie是純粹客戶端的唯一cookie,並且它永遠不必去服務器,因爲我不需要服務器上的用戶生成的數據,所以我想擺脫Cookie在創建之間來回發送的額外開銷瀏覽器和服務器。是否有可能實現這一目標?客戶端只有cookie - 沒有去過服務器的cookie

+0

你能告訴我們你已經嘗試了代碼? –

+1

根據目標瀏覽器,你可以看看localStorage - http://paperkilledrock.com/2010/05/html5-localstorage-part-one/ – Archer

+0

'localstorage'已被排除,因爲我需要支持所有瀏覽器主要的。馬克 - 我已經實現了所有功能,除了「純粹的客戶端只有cookie」。我使用適當的名稱 - 值對,過期日期和使用代碼在quirksmode上找到的路徑創建cookie。我能夠使用javascript來控制cookie。只是我無法實現「僅客戶端cookie」部分。我希望你有我的問題? –

回答

4

如果瀏覽器兼容性是一個問題,您可以使用一些JavaScript來包裝各種不同的技術。舊版本的IE支持(supprise supprise)一個名爲userData的專有版本的localstorage(我不認爲它完全一樣,但應該做你需要的)。

http://www.jstorage.info/https://github.com/marcuswestin/store.js這樣的包裝腳本應該做你需要它做的事情。

+0

非常感謝@Bulk,我會給這個鏡頭。但個人而言,我更喜歡瀏覽器獨立的cookie解決方案,在這種情況下,我的失敗案例將被擊倒爲兩個 - 瀏覽器對Cookie執行大小限制,並在瀏覽器上禁用Cookie(用戶數據/本地存儲也可以類似地禁用並猜這個失敗案例可以排除)。 –

+1

我不能肯定地說,我99%肯定沒有基於「餅乾」的解決方案,但隨時保持尋找:) –

2

我100%確定沒有辦法強制cookies僅僅作爲客戶端,他們總是發送到服務器。然而,有可能做相反的事情:通過在Cookie上設置HttpOnly標誌,服務器端只有cookie(javascript無法讀取)。

8

我知道這對你來說有點遲,但這個答案適用於所有有同樣問題的人。

1)使用HTML5,您可以使用web storage

2)(只是一個主意! - 未經測試!) 您可以定義一個cookie(通過客戶端上的javascript)並設置「安全」屬性。 在這種情況下,cookie將僅通過HTTPS連接發送到服務器。 爲了確保餅乾永遠不會離開瀏覽器,你只是不打開一個HTTPS連接;-)

更新:

你也可以簡單地將cookie的路徑設置爲實際上沒有一個路徑存在。

document.cookie="name=value;path=/notExistingPath"; 
+0

我有2)相同的想法,但它不起作用。你不能從JS訪問安全的cookie(至少不能在FF中)。 1)非常棒! – Lodovik

+1

哦對。我忘記了js訪問。 我試圖找到一個也不支持網絡存儲的瀏覽器的解決方案。您可以嘗試將Cookie路徑值設置爲不存在的路徑。所以cookie不應該被髮送。 (不是testet,請嘗試並回答結果) –

+0

如果您希望您的Cookie在IE或Edge瀏覽器上工作,請勿使用'path =/notExistingPath' – amanteaux

0

使用一個不可能的路徑設置cookie:

document.cookie = "cookieName=...; expires=... ; path=/never_reached/ablkappmqlnahsuia"; 
相關問題