Cookie domain 屬性

admin發表於2019-11-15

此屬性規定當前Cookie對哪些域有效,向這些域傳送HTTP(s)請求會包含此Cookie。

對此屬性的恰當應用,可有效改善網站使用者體驗,下面進行一下詳細分析。

一.單點登入:

大型的網站通常都有很多功能各不相同的分站。

以百度為例,常見的分站有百度站長統計、百度貼吧、百度站長社群等。

在某一個分站登入賬號之後,在其他分站無需重複登入,自動處於登入狀態。

上述人性化功能,就是單點登入,實現此功能其中會用到Cookie的domain屬性。

二.域名分級:

域名是分層級的,比如一級域名或者二級域名。

以本站域名softwhy.com作為例子進行介紹:

(1).softwhy.com:一級域名。

(2).www.softwhy.com:二級域名(不要誤認為是一級域名)。

(3).ke.softwhy,com:二級域名(與上面同理)。

(4).a.www.softwhy.com:三級域名。

softwhy.com是主域名,其他的三個都是它的子域名,當然還可以繼續劃分下去。

三.domain屬性:

文章開始位置已經說過,此屬性的功能是規定當前Cookie生效的域。

語法結構:

[JavaScript] 純文字檢視 複製程式碼
domain=domain

domain可以允許的屬性值總結如下:

(1).如果顯式規定,屬性值只能是當前域或者其父域,此時瀏覽器會自動給域或者父域前面加點。

(2).如果省略此屬性,那麼domain屬性就是當前頁面所在的域(前面不會自動加點)。

domain屬性規定域的作用範圍:

(1).如果屬性值最終結果帶有點,那麼作用範圍是最終結果這個域本身或者其所有子域。

(2).如果屬性值最終結果沒有點,那麼作用範圍是最終結果這個域本身。

四.程式碼例項:

下面的例子都是在www.softwhy.com域進行的測試。

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

上述程式碼沒有顯式規定domain屬性值,那麼預設值就是當前所在的域。

谷歌開發者工具截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201911/15/224237a1z21olirbokneww.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

可以看到domain值是www.softwhy.com,前面並沒有點。

此時Cookie對www.softwhy.com域有效,會隨著對這個域頁面的HTTP(S)請求傳送到伺服器。

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

顯式規定domain屬性值為www.softwhy.com,那麼屬性值會被瀏覽器自動在前面加點。

谷歌開發者工具截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201911/15/224309r4cdcbdlbs55bxlu.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

第一個Cookie是上一個程式碼規定,第二個Cookie是當前程式碼規定的。

仔細觀察,第二個Cookie域的前面具有一個點,總結如下是:

(1).如果域不同,同name的Cookie不會被覆蓋。

(2).只要顯式規定domain值,必定會在域前面新增點。

(3).如果帶點,有效範圍就是屬性值所規定的域和此域的子域。

(4).所以上面程式碼domain屬性值作用範圍是域www.softwhy.com和其子域。

相關文章