頂級域名和子級域名之間的cookie共享
設定COOKIE
頂級域名
頂級域名只能設定domain
為頂級域名,不能設定為二級域名或者三級域名等等,否則cookie
無法生成。
如
yangbai.com
能設定domain
為yangbai.com
或者www.yangbai.com
,但不能設定domain
為login.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.com
和yangbai.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
,不能讀取其他二級域名domain
的cookie
。例如:要想cookie
在多個二級域名中共享,需要設定domain
為頂級域名,這樣就可以在所有二級域名裡面或者到這個cookie
的值了。 -
頂級域名只能獲取到
domain
設定為頂級域名的cookie
,domain
設定為其他子級域名的無法獲取。
修改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