1. 程式人生 > >頂級域名和子級域名之間的cookie共享

頂級域名和子級域名之間的cookie共享

設定COOKIE

頂級域名

頂級域名只能設定domain為頂級域名,不能設定為二級域名或者三級域名等等,否則cookie無法生成。

yangbai.com能設定domainyangbai.com或者www.yangbai.com,但不能設定domainlogin.yangbai.com,這樣cookie不會生成。

以下面的程式碼為例:

setcookie("name1", "yangbai", time() + 1000);//yangbai.com自己可以看到
setcookie("name2", "yangbai", time() + 1000, "/", "www.yangbai.com"
);//*.www.yangbai.com都可以看到 setcookie("name3", "yangbai", time() + 1000, "/", "yangbai.com");//*.yangbai.com都可以看到 setcookie("name4", "yangbai", time() + 1000, "/", "login.youzan.com");//設定無效

設定domain的時候,.yangbai.comyangbai.com是一樣的。
未指定domain時,預設的domain為用哪個域名訪問就是哪個。

執行後,www.yangbai.com在瀏覽器的cookie情況如下圖:

二級域名login.yangbai.com

game.yangbai.com瀏覽器的cookie情況如下圖:

總的來說,頂級域名設定的cookie可以共享【需要指定domain主域名的host】給二級域名,也可以自己私有【不指定domain】。

二級域名

game.yangbai.com為例,程式碼如下:

setcookie("game", "yangbai");//只有自己可以看到
setcookie("game1", "yangbai", time() + 1000, "/", "yangbai.com");//*.yangbai.com都可以看到
setcookie("game2", "yangbai", time() + 1000, "/"
, "chip.game.yangbai.com");//設定無效

執行後,game.yangbai.com在瀏覽器的cookie情況如下圖:

總的來說,設定cookie的話只能在本域名下或者domain級別高於自身的域名下才會生效!

讀取COOKIE

有了上面的例子和實踐,大概的規則如下:

  • 二級域名能讀取設定了domain為頂級域名或者自身的cookie,不能讀取其他二級域名domaincookie。例如:要想cookie在多個二級域名中共享,需要設定domain為頂級域名,這樣就可以在所有二級域名裡面或者到這個cookie的值了。

  • 頂級域名只能獲取到domain設定為頂級域名的cookiedomain設定為其他子級域名的無法獲取。

修改COOKIE

頂級域名

頂級域名的cookie在頂級域名或者非頂級域名【需要設定domain為頂級域名才可以】都可以修改。程式碼如下:

#為所有二級域名設定一個cookie
setcookie("name", "yangbai", time() + 1000, "/", "yangbai.com");

#在game.yangbai.com下面修改這個cookie值
setcookie("name", "yangbai11", time() + 1000, "/", "yangbai.com");

二級域名

修改二級域名自身生成的cookie不需要設定domain,直接設定即可。程式碼如下:

#修改game.yangbai.com下面自身的cookie值
setcookie("game", "chip", time() + 10000);

刪除COOKIE

刪除cookie理解為是修改cookie的一種特殊場景,只需將expire設定為過期、值設定為null即可,程式碼如下:

#刪除yangbai.com下面的cookie值
setcookie("name", null, time() - 1000, "/", "yangbai.com");

#刪除game.yangbai.com下面自身的cookie值
setcookie("game", null, time() - 1000);

最後,希望這些簡單地總結可以幫到你,大家加油!

請尊重版權,原文地址:https://segmentfault.com/a/1190000006932934