JavaScript 設定cookie 過期時間
專案中,使用cookie儲存一些安全性要求低,且量較小的資料是一個不錯的選擇。
比如比較典型的,記憶使用者名稱和密碼,或者保持使用者喜愛的頁面風格等。
通常要給cookie設定一個過期時間,下面將對其做一下詳細介紹。
一.cookie儲存方式:
伺服器傳送到瀏覽器的cookie存在兩種儲存方式:
(1).如果設定過期時間,那麼cookie將儲存在本地硬碟,過期會自動刪除。
(2).如果不設定過期時間,那麼cookie存在於計算機記憶體中,當會話結束或者關閉瀏覽器視窗,將刪除cookie。
二.設定過期時間:
cookie具有兩個屬性可以規定cookie的過期時間。
(1).通過Expires屬性設定過期時間:
可以通過響應頭設定cookie的過期時間,程式碼如下:
[JavaScript] 純文字檢視 複製程式碼Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT;
作者比較懶,上述程式碼來自於MDN,Expires時間是UTC 格式。
UTC格式可以通過Date物件的toUTCString()轉換。
當然我們可以通過JavaScript來設定Expires屬性,程式碼如下:
[JavaScript] 純文字檢視 複製程式碼document.cookie="name=value;expires=date"
date也是UTC格式,下面是一個可以設定cookie立馬過期的程式碼:
[JavaScript] 純文字檢視 複製程式碼//取cookies function getCookie(name){ let arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)")); if (arr != null) return unescape(arr[2]); return null; } //刪除cookie function delCookie(name){ var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval = getCookie(name); if (cval != null) document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString(); }
(2).通過Max-Age屬性設定過期時間:
通過Max-Age同樣可以設定cookie的過期時間。
Max-Age屬性值是一個數字,單位是秒,用來指定cookie從現在開始存在的秒數。
超過這個這個秒數,那麼cookie立馬過期;如果同時設定Max-Age與Expires,那麼Max-Age優先順序更高。
下面看一段利用此屬性封裝的設定cookie過期時間的程式碼:
[JavaScript] 純文字檢視 複製程式碼function setcookie(name, value, daysTolive) { let cookie = name + "=" + encodeURIComponent(value); if (typeof daysTolive === "number") cookie += "; max-age =" + (daysTolive * 60 * 60 * 24); document.cookie = cookie; } setcookie("ant","螞蟻部落",0);
程式碼分析如下:
(1).函式第一個引數是cookie名稱。
(2).函式第二個引數是cookie的值。
(3).函式第三個引數是一個數字,規定多少天后過期,60 * 60 * 24表示24小時。
(4).如果第三個引數設定為0,則表示設定當前cookie立即過期。
三.過期時間依據本地時間:
cookie的過期時間是依據瀏覽器所在的計算機本地時間,這一點需要特別注意。
所以雖然在伺服器設定了一個過期時間,但是在本地可能並不能達到要求。
比如在伺服器設定在3年後過期,如果將本地時間手動時間調整到三年後,那麼此cookie會立馬過期。
關於cookie的更多內容可以參閱其他相關章節。
相關文章
- JavaScript 設定Cookie過期時間無效JavaScriptCookie
- JavaScript設定cookie立即過期JavaScriptCookie
- JavaScript設定cookie永不過期JavaScriptCookie
- JavaScript獲取cookie過期時間JavaScriptCookie
- redis設定過期時間Redis
- localStorage設定過期時間
- 檢視Cookie過期時間Cookie
- javascript設定cookie立即過期程式碼例項JavaScriptCookie
- 設定phpsession過期時間PHPSession
- javascript設定cookie立馬過期程式碼例項JavaScriptCookie
- C#如何設定session過期時間C#Session
- C# 給PDF文件設定過期時間C#
- 如何給localStorage設定一個過期時間?
- SAP過帳期間設定
- tomcat 設定session過期時間(四種方式)TomcatSession
- 通過offsets.retention.minutes設定kafkaoffset的過期時間Kafka
- 教你修改 Laravel "記住我" Cookie 的過期時間.LaravelCookie
- Cookie 作用,互動過程解析,設定,獲取,刪除,生效時間的設定Cookie
- 優雅的快取解決方案--設定過期時間快取
- 關於 session 未到設定的過期時間就過期的問題(分享坑點)Session
- redis 過期時間Redis
- Linux密碼過期時間設定 /etc/login.defsLinux密碼
- 面試官:RabbitMQ過期時間設定、死信佇列、延時佇列怎麼設計?面試MQ佇列
- httpsession過期時間HTTPSession
- Passport 設定token 過期時間盡然不生效!這是為什麼?Passport
- 定時拷貝加時間維的檔案和定時刪除過期檔案
- javascript 對cookie的讀取和設定JavaScriptCookie
- redis hset hmset過期時間Redis
- 設定有過期時間的廣告程式碼例項
- RabbitMQ 高階 - 過期時間 TTLMQ
- 【Linux-時間設定】-設定時區並調整時間Linux
- Redis和DelayQueue設計具有過期時間的快取Redis快取
- 設定時間格式
- quartz定時任務時間設定quartz
- redis 設定過期時間,以資料夾形式展示key顯示快取資料Redis快取
- GitLab 中文版如何設定密碼長度、複雜度以及過期時間?Gitlab密碼複雜度
- javascript設定或者獲取cookie程式碼例項JavaScriptCookie
- Windows區域網通過NTP設定時間同步Windows