Cookie max-age與expires 區別

admin發表於2019-11-14

當前閱讀程式碼的時候,採用expires屬性設定過期時間仍佔大多數。

主要出於如下幾個原因:

(1).max-age是新屬性,低版本IE瀏覽器支援度不夠。

(2).expires屬性可以相容當前所有主流瀏覽器。

下面結合程式碼片段對max-age與expires設定Cookie過期時間的區別進行一下介紹。

一.瀏覽器相容性:

前文已經提到,由於max-age是新屬性,所以低版本IE瀏覽器支援度不夠。

expires屬性則可以非常好被當前所有主流瀏覽器支援,如果要相容低版本瀏覽器推薦使用此屬性。

隨著軟硬體的進步,推薦使用max-age屬性設定Cookie過期時間,它的特點後面會進行分析。

二.屬性值區別:

expires屬性值是一個具體的時間字串,比如可以具體到年月日小時分鐘秒。

max-age屬性值是整數,規定在多少秒後過期,是一個相對日期。

三.max-age優點:

1.expires在不同瀏覽器過期時間格式可能不同:

expires屬性設定過期時間,首先需要將時間日期轉換為GMT/UTC格式,否則某些瀏覽器可能會出現誤差。

上述問題可以參閱JavaScript 設定Cookie過期時間無效一章節。

max-age屬性設定,在各個瀏覽器的最終生成的過期時間統一為GMT/UTC格式。

2.max-age優先順序更高:

這個並不算是優點,畢竟它的優先順序高嘛,勉強算是優點吧。

如果同時設定expires和max-age屬性,那麼max-age屬性設定的過期時間會生效。

3.伺服器與客戶端時間不同時:

通常時候,我們都是認為伺服器時間與客戶端時間是相同的。

很明顯,也有不同的可能,如果採用expires屬性設定會出現誤差,簡述如下:

(1).假設在伺服器端設定Cookie兩分鐘後過期。

(2).expires設定的是一個具體日期時間,在伺服器中只能以伺服器時間為參考。

(3).如果客戶端時間與伺服器時間差距很大,例如比伺服器端快兩分鐘,那麼這個Cookie立馬過期了。

(4).如果採用max-age屬性設定,則不會上述情況,依然是兩分鐘後過期。

[JavaScript] 純文字檢視 複製程式碼
document.cookie = 'softwhy="青島市南區";max-age=120;path=/'

通過max-age屬性設定Cookie在120秒後過期,同時設定expires屬性,以max-age為準。

相關文章