2015-10-08 72 views
0

我使用庫js-cookie。以前,我使用jquery.cookie。 我在複製cookie條目時遇到了一些問題。 一段時間,當我打電話當我設置cookie時,爲什麼有幾個重複條目?

Cookies.set('my-cookie-name', 'value', {'path': '/'}); 

我相信,我把這種方法在我的代碼只有一個地方,但結果我:

--------------------------------------------------------------- 
Name    Value  Domain    Path 
--------------------------------------------------------------- 
my-cookie-name  1   mydomain.com  /foo/bar/ 
my-cookie-name  value  mydomain.com  /
--------------------------------------------------------------- 

這不會發生的每一次。 這個問題很少發生,所以很難趕上。此時我在設置新值之前刪除cookie,並且不要再次捕捉問題。但我認爲這是錯誤的用法。

與名'my-cookie-name'套餅乾只在一個地方的代碼。 這個問題我抓住我的開發機器,所以它不能是一箇舊的cookie。

我用它來切換某個狀態。我的意思是這樣的:

var state = 'on'; 
$elem.on('click', function(e){ 
    state = state === 'on' ? 'off' : 'on'; 
    Cookies.set('my-cookie-name', state, {path: '/'}); 
}); 

可能是錯誤的用法?我需要在設置新值之前刪除舊的Cookie?

瀏覽器:Chrome的V45

This issue on GitHub

回答

0

Cookie是其領域,路徑和安全屬性進行定義的,你需要格外小心,避免重複。

但爲什麼會發生這種情況?很難說,但這是我的理論:

  1. 即使您只調用一次,用戶可能已經在本地有一個cookie。更改代碼不會刪除先前保存的cookie。
  2. 你可能會傳遞屬性參數對象文本引用,那麼另一個代碼更改對象最終和Cookie集操作是不同的路徑之後運行。
  3. 另一個cookie正在服務器中設置爲不同的屬性,因此當您嘗試在客戶端中設置時,它會重複。
  4. 一些代碼改變在運行時Cookies方法,然後當你調用Cookies.set()它複製的cookie的行爲。

除此之外我想不出其他原因發生這些選項。

我建議您按照this guide,它會告訴您如何減少代碼以縮小問題範圍。

我們計劃write some docs about duplicated cookies。在同一鏈接中,您可以找到可幫助您解決問題的相關主題。

我希望它有幫助。

相關問題