2013-10-01 67 views
8

我知道這個問題已經被問了上千次,但沒有一個答案真的給了我要找的東西。我使用jQuery cookie來存儲一些信息,但我希望它們在瀏覽器關閉時過期。 window.unload是不是一個可行的選擇(閱讀:不工作。)jQuery cookies可能會像會話變量一樣過期嗎?

我的問題是:是實際上可能有設置在瀏覽器關閉,如會話過期餅乾?如果是這樣,有誰知道如何?

更新:原來,它很簡單,而不是通過屆滿:0(沒有工作),只是不通過任何屆滿。那麼這就解釋了爲什麼沒有太多問題。

謝謝大家。

+1

HTTP必須發送到期日期。如果它發送正確的日期,請檢查RFC和實現。 (必須在過去。) – schlingel

回答

18

原來這是相當簡單的,而不是傳遞屆滿:0(沒有工作),只是不沒有任何失效。那麼這就解釋了爲什麼沒有太多問題。

因此,而不是用像這樣的標誌期滿合格:

$.cookie(key, value, { expiry: 0, domain: '', path: '' }); 

你只是省略到期值:

$.cookie(key, value, { domain: '', path: '' }); 

和它的作品。這是如此簡單的事情,它讓我困惑。

但是,無論如何,謝謝!

2

它可能在RFC 2965 specification。也就是說,如果您在您的Cookie處理代碼中設置了「丟棄」屬性(如果瀏覽器支持該屬性),則可以這樣做。

這就是說:jQuery cookie不支持Discard-property。你將不得不延長像這樣的jQuery-Cookie代碼(這是關於在原始文件第57行):

 return (document.cookie = [ 
      config.raw ? key : encodeURIComponent(key), 
      '=', 
      config.raw ? value : encodeURIComponent(value), 
      options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE 
      options.path ? '; path=' + options.path : '', 
      options.domain ? '; domain=' + options.domain : '', 
          options.discard ? '; Discard=' + options.discard : '', 
      options.secure ? '; secure' : '' 
     ].join('')); 
0

如果使用默認的設置是這樣

$.cookie.defaults = { path: '/', expires: 365 }; 

,那麼你需要使用以下屬性爲每個cookie值

$.cookie(key, value, { expires: null });