2009-10-07 102 views

回答

40

不可能通過Javascript獲取cookie的到期日期;只有鍵值對通過document.cookie公開。

+3

是的 - 它被設定後,到期日是不透明的;:在JSON對象再次,然後在瀏覽器與expires - 然後,當你重寫你的cookie的使用兩次日期它將出現在document.cookie中,直到它到期,此時它將停止。 – 2009-10-07 15:05:27

+4

但是,如果您在創建時[明確將其存儲在cookie數據中](http://stackoverflow.com/questions/3417087/jquery-cookie-expiration-value/15221924#15221924),則可以讀取日期。 – 2013-09-24 09:36:38

7

如果您使用的是Chrome,您可以轉到「應用程序」選項卡(在開發工具中)並在左側邊欄中找到「Cookies」項。從那裏選擇你正在檢查設置cookie的域名,它會給你一個與該域名相關的cookies列表,以及它們的截止日期。

+1

我不明白爲什麼這沒有更多的upvotes - 正是我所需要的是驗證我的新的JS腳本設置co​​okie正在工作。感謝這 – 2015-04-07 13:59:52

+27

因爲它不是一個答案...「轉到Chrome」不是「如何使用JavaScript讀取cookie過期日期」的答案 – Tomino 2015-07-15 08:57:01

+0

哇,真棒的功能。 Chrome永遠不會令我驚歎! – CrazyTim 2016-06-01 01:21:07

1

有些人會發現這種爭議 - 但一種解決方案是同時創建另一個cookie,並將其中的時間/戳記與創建的任何原始cookie並行存儲。同時更新它們,這樣您就可以輕鬆地從新的cookie中獲取時間(或者在源cookie中附加時間/戳記)。

這會引起爭議的原因是,多年來,在用戶PC上存儲cookie的想法並不流行,因爲您正在佔用他們的空間。不過,我真的懷疑一個小時間戳cookie會太可怕了。

值得記住的是,如果時間已過,瀏覽器將不會報告該cookie可用。瀏覽器可能會顯示cookie,但是當JS嘗試訪問它時 - 它將不能使用。

此外,我發現Firefox中的WebDeveloper工具欄顯示已通過但在Firefox>隱私設置下的cookie,但它們已正確更新。

0

另一種方法是將過期日期寫入cookie的主體,然後從那裏重新讀取,以便後續重寫。我已經得到了這個與夢幻般的js-cookies圖書館合作。

設置是這樣的:

// Set cookie expiration as a number (of days) 
var paywallDuration = 30; 

// When you set the cookie, add the `expires` key/value pair for browsers 
// Also add `expirationDate` key/value pair into JSON object 
Cookies.set('article-tracker', { 
    expirationDate : paywallDuration, 
    totalArticlesRead: 1 
}, { 
    expires : paywallDuration, 
    domain : 'example.com' 
}); 

閱讀你的cookie和改寫是直接的用這種方法。使用js-cookie的getJSON()方法讀取您設置的過期日期。

var existingPaywallDuration = Cookies.getJSON('article-tracker').expirationDate; 

Cookies.set('article-tracker', { 
    expirationDate: existingPaywallDuration, 
    totalArticlesRead: 4 
}, { 
    expires : existingPaywallDuration, 
    domain : 'example.com' 
});