2013-05-05 284 views
1

是的,不太清楚這是什麼樣的標題。但我現在有一個隨機的想法,我甚至不知道它是否可能,我猜不是,但希望有人可以肯定地告訴我是/否。jQuery JavaScript有沒有一種方法來監聽cookies的變化

整體問題來自在DOM中監聽事件的概念,這讓我想到了使用cookie的可能性。知道我的cookie通常在頁面加載時存儲爲變量。我可以將它與它發生變化的事件進行比較。我所擁有的是2個不應該改變的cookie,除非它們被腳本刪除。所以我想聽聽他們,看看他們是否改變,如讓用戶進入瀏覽器並以某種方式更改值。如果發生這種情況,我想在此基礎上做點什麼。

我知道我無法做任何關於它們通過諸如螢火蟲或其他控制檯的瀏覽器進行物理更改的任何事情。但是,希望知道

var myCookie = cookie;

在頁面加載時,所以如果是可以監控的變化,我可以使用的myCookie來比較它,以確保在頁面加載的變量是一樣的一個嘗試,現在可以使用。

那麼,即使是遠程可能的?有沒有像大多數DOM元素一樣監聽cookie變化的方法,還是從瀏覽器級別無法監控的管道夢想和安全問題?

+0

2022年出現了一個socket-cookie,它將完全異步,並且在添加內容時發送內容!爲什麼你會需要這個,你不知道你是否改變了你的cookies? – adeneo 2013-05-05 21:16:37

+0

它看起來像另一個XY-問題。你爲什麼需要這個?什麼是原始任務? – zerkms 2013-05-05 21:17:20

+0

沒錯。你爲什麼要觀察cookie?他們不是實時存儲,而是在單個機器上的會話中存儲信息。我理解你的觀點,但是我猜想有一種更好的選擇來使用類似這樣的cookie ......就像你實際需要它們或離開網站時那樣,比較值並相應地做。 – Kiruse 2013-05-05 21:18:54

回答

1

無法知道Cookie在頁面生命週期之外何時發生變化。當你的頁面沒有被加載時,你的頁面代碼甚至沒有運行,因此即使有這樣的事件存在,cookie也可以隨意改變,你的代碼也不會運行以監視這種改變。

可能的替代解決方案,我能想到的是:

  1. 存儲數據的服務器端,你控制存儲的安全性和安全性。您可能需要登錄系統,或者您可以唯一地cookie瀏覽器(如購物車),以便您知道哪些服務器端數據屬於此瀏覽器。然後,用戶從未有機會修改數據,而無需參與。
  2. 將數據存儲在多個位置,然後比較每個位置的值。這並不能阻止確定的黑客最終搞清楚你的​​系統,但是這比編輯cookie值要困難得多。例如,您可以將該值存儲在幾個Cookie中並存儲在本地存儲中。甚至可以在Flash中存儲類似cookie的內容。請注意,這比實際的安全性要遜色得多,但它可能會阻止任何人,但真正確定的黑客。
  3. 加密和校驗數據,因此它是不容易的,沒有你確定它已經被編輯或無需專人先搞清楚你的​​加密或校驗算法進行編輯。再次,這是晦澀的,但它可以防止隨意的cookie編輯。

存儲服務器上的數據是允許真正的安全是唯一的選擇。


如果你只是想看看如果cookie被改變,而你的頁面加載,那麼你可以簡單地在頁面加載時間的cookie值裝載到一個變量,然後定期與setInterval()輪詢的cookie值看看它是否已被修改。或者,如果您只想知道它是否在您的頁面的某些執行點已被修改(如提交表單之前),您可以在這些時間點檢查當前Cookie值與原始變量。

相關問題