最近項目中恰好涉及到了主域名和子域名之間的共享和相互修改、刪除,也就藉此機會總結一下經常使用的幾個場景,這裏代碼以PHP
爲例來講明,域名的話就拿頂級域名和二級域名爲例,其餘的場景都是相似哈!瀏覽器
頂級域名只能設置domain
爲頂級域名,不能設置爲二級域名或者三級域名等等,不然cookie
沒法生成。cookie
如
yangbai.com
能設置domain
爲yangbai.com
或者www.yangbai.com
,但不能設置domain
爲login.yangbai.com
,這樣cookie
不會生成。dom
如下面的代碼爲例:spa
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
爲用哪一個域名訪問就是哪一個。code
執行後,www.yangbai.com
在瀏覽器的cookie
狀況以下圖:blog
二級域名login.yangbai.com
和game.yangbai.com
瀏覽器的cookie
狀況以下圖:圖片
總的來講,頂級域名設置的cookie
能夠共享【須要指定domain
主域名的host
】給二級域名,也能夠本身私有【不指定domain
】。ip
拿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
狀況以下圖:it
總的來講,設置
cookie
的話只能在本域名下或者domain
級別高於自身的域名下才會生效!
有了上面的例子和實踐,大概的規則以下:
二級域名能讀取設置了domain
爲頂級域名或者自身的cookie
,不能讀取其餘二級域名domain
的cookie
。例如:要想cookie
在多個二級域名中共享,須要設置domain
爲頂級域名,這樣就能夠在全部二級域名裏面或者到這個cookie
的值了。
頂級域名只能獲取到domain
設置爲頂級域名的cookie
,domain
設置爲其餘子級域名的沒法獲取。
頂級域名的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的一種特殊場景,只需將expire
設置爲過時、值設置爲null
便可,代碼以下:
#刪除yangbai.com下面的cookie值 setcookie("name", null, time() - 1000, "/", "yangbai.com"); #刪除game.yangbai.com下面自身的cookie值 setcookie("game", null, time() - 1000);
最後,但願這些簡單地總結能夠幫到你,你們加油!