腾讯欢乐捕鱼刷金币|腾讯欢乐捕鱼大战技巧

JavaScript 設置Cookie過期時間無效

2019-11-13 22:43| 作者: admin| 查看: 658| 評論: 0|來自: 螞蟻部落

到達過期時間之后,Cookie會被自動刪除,這也是Cookie刪除操作的實現原理。

有時雖然設置了過期時間(沒有任何語法錯誤),但是到達過期時間之后,cookie并未被刪除。

下面介紹一種非常具有迷惑性Cookie過期時間無效的情況,供大家參考。

一.現象描述:

通過谷歌瀏覽器控制臺在螞蟻部落寫入如下Cookie:

[JavaScript] 純文本查看 復制代碼
document.cookie = 'softwhy="螞蟻部落";expires='+new Date()+';path=/'

控制臺運行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201911/13/224445dsvz1bbs3favabr1.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

代碼分析如下:

(1).document.cookie屬性新增一個Cookie,name是softwhy,value是字符串"螞蟻部落"。

(2).new Date()獲取的是客戶端本地當前日期時間,也就是說Cookie會立馬過期。

但實際情況是,此Cookie并沒有被立馬刪除,依然可以通過document.cookie屬性獲取:

a:3:{s:3:\"pic\";s:43:\"portal/201911/13/224503k6sihtpf8wpfffsy.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上述代碼是在谷歌瀏覽器的表現,但是在火狐瀏覽器表現是正常的。

二.原因分析:

下面通過谷歌開發者工具查看一下上述Cookie的過期時間:

a:3:{s:3:\"pic\";s:43:\"portal/201911/13/224520v2wdcnpmjms2dvcc.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

時間分析如下:

(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過期時間一章節。


鮮花

握手

雷人

路過

雞蛋

最新評論

返回頂部
腾讯欢乐捕鱼刷金币 全民彩票计划新快3 福彩内蒙古时时彩开奖结果 股票开户流程 福建十一选五走势图江苏 象棋马怎么算别腿图片 做代运营赚钱 黑龙江36选7开奖电视 山西11选5投注技巧 德甲射手榜 老时时彩开奖结果