JavaScript 設定Cookie過期時間無效
到達過期時間之後,Cookie會被自動刪除,這也是Cookie刪除操作的實現原理。
有時雖然設定了過期時間(沒有任何語法錯誤),但是到達過期時間之後,cookie並未被刪除。
下面介紹一種非常具有迷惑性Cookie過期時間無效的情況,供大家參考。
一.現象描述:
通過谷歌瀏覽器控制檯在螞蟻部落寫入如下Cookie:
[JavaScript] 純文字檢視 複製程式碼document.cookie = 'softwhy="螞蟻部落";expires='+new Date()+';path=/'
控制檯執行效果截圖如下:
程式碼分析如下:
(1).document.cookie屬性新增一個Cookie,name是softwhy,value是字串"螞蟻部落"。
(2).new Date()獲取的是客戶端本地當前日期時間,也就是說Cookie會立馬過期。
但實際情況是,此Cookie並沒有被立馬刪除,依然可以通過document.cookie屬性獲取:
上述程式碼是在谷歌瀏覽器的表現,但是在火狐瀏覽器表現是正常的。
二.原因分析:
下面通過谷歌開發者工具檢視一下上述Cookie的過期時間:
時間分析如下:
(1).對比這個Cookie實際過期時間與控制檯返回的時間。
(2).發現北京時間被谷歌瀏覽器粗暴修改為GMT/UTC時間,沒有進行換算。
(3).在前端可以認為GMT與UTC時間完全是一回事,都是指世界標準時間。
(4).由於北京時區是東八區,所以UTC/GMT+8=北京時間。
(5).所以上面Cookie真正過期時間並不是北京時間2019年11月13日22:04:15,而是再延後8小時。
(6).火狐瀏覽器進行了正確處理,並不會粗暴處理北京時間,而是將北京時間轉換為GMT/UTC時間。
三.正確設定過期時間:
下面給出正確設定過期時間的方式,程式碼如下:
[JavaScript] 純文字檢視 複製程式碼document.cookie = 'softwhy="螞蟻部落";expires='+new Date().toUTCString()+';path=/'
通過方法將其轉換為GMT/UTC時間,然後再去設定過期時間。
關於Cookie過期更多內容可以參閱如下幾篇文章:
(1).JavaScript 刪除Cookie一章節。
(2).Cookie max-age與expires 區別一章節。
(3).max-age設定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設定一個過期時間?
- cookie時效無限延長方案Cookie
- SAP過帳期間設定
- tomcat 設定session過期時間(四種方式)TomcatSession
- 通過offsets.retention.minutes設定kafkaoffset的過期時間Kafka
- 教你修改 Laravel "記住我" Cookie 的過期時間.LaravelCookie
- Cookie 作用,互動過程解析,設定,獲取,刪除,生效時間的設定Cookie
- [BUG反饋]OneThink1.1.141212中的儲存sessionid的cookie過期時間無效的解決SessionCookie
- SPM設定保留空間和保留時效
- 優雅的快取解決方案--設定過期時間快取
- 關於 session 未到設定的過期時間就過期的問題(分享坑點)Session
- redis 過期時間Redis
- Linux密碼過期時間設定 /etc/login.defsLinux密碼
- 面試官:RabbitMQ過期時間設定、死信佇列、延時佇列怎麼設計?面試MQ佇列
- httpsession過期時間HTTPSession
- laravel8 時區設定無效解決辦法Laravel
- Passport 設定token 過期時間盡然不生效!這是為什麼?Passport
- IIS設定預設主頁無效
- 定時拷貝加時間維的檔案和定時刪除過期檔案
- javascript 對cookie的讀取和設定JavaScriptCookie
- redis hset hmset過期時間Redis
- 設定有過期時間的廣告程式碼例項
- RabbitMQ 高階 - 過期時間 TTLMQ
- 【Linux-時間設定】-設定時區並調整時間Linux
- Redis和DelayQueue設計具有過期時間的快取Redis快取
- 設定時間格式