摘要:執(zhí)行后,在瀏覽器的情況如下圖二級域名和瀏覽器的情況如下圖總的來說,頂級域名設(shè)置的可以共享需要指定主域名的給二級域名,也可以自己私有不指定。頂級域名只能獲取到設(shè)置為頂級域名的,設(shè)置為其他子級域名的無法獲取。
最近項(xiàng)目中剛好涉及到了主域名和子域名之間的共享和相互修改、刪除,也就借此機(jī)會總結(jié)一下常用的幾個場景,這里代碼以PHP為例來說明,域名的話就拿頂級域名和二級域名為例,其他的場景都是類似哈!
設(shè)置COOKIE 頂級域名頂級域名只能設(shè)置domain為頂級域名,不能設(shè)置為二級域名或者三級域名等等,否則cookie無法生成。
如yangbai.com能設(shè)置domain為yangbai.com或者www.yangbai.com,但不能設(shè)置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");//設(shè)置無效
設(shè)置domain的時候,.yangbai.com和yangbai.com是一樣的。
未指定domain時,默認(rèn)的domain為用哪個域名訪問就是哪個。
執(zhí)行后,www.yangbai.com在瀏覽器的cookie情況如下圖:
二級域名login.yangbai.com和game.yangbai.com瀏覽器的cookie情況如下圖:
總的來說,頂級域名設(shè)置的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");//設(shè)置無效
執(zhí)行后,game.yangbai.com在瀏覽器的cookie情況如下圖:
讀取COOKIE總的來說,設(shè)置cookie的話只能在本域名下或者domain級別高于自身的域名下才會生效!
有了上面的例子和實(shí)踐,大概的規(guī)則如下:
二級域名能讀取設(shè)置了domain為頂級域名或者自身的cookie,不能讀取其他二級域名domain的cookie。例如:要想cookie在多個二級域名中共享,需要設(shè)置domain為頂級域名,這樣就可以在所有二級域名里面或者到這個cookie的值了。
頂級域名只能獲取到domain設(shè)置為頂級域名的cookie,domain設(shè)置為其他子級域名的無法獲取。
修改COOKIE 頂級域名頂級域名的cookie在頂級域名或者非頂級域名【需要設(shè)置domain為頂級域名才可以】都可以修改。代碼如下:
#為所有二級域名設(shè)置一個cookie setcookie("name", "yangbai", time() + 1000, "/", "yangbai.com"); #在game.yangbai.com下面修改這個cookie值 setcookie("name", "yangbai11", time() + 1000, "/", "yangbai.com");二級域名
修改二級域名自身生成的cookie不需要設(shè)置domain,直接設(shè)置即可。代碼如下:
#修改game.yangbai.com下面自身的cookie值 setcookie("game", "chip", time() + 10000);刪除COOKIE
刪除cookie理解為是修改cookie的一種特殊場景,只需將expire設(shè)置為過期、值設(shè)置為null即可,代碼如下:
#刪除yangbai.com下面的cookie值 setcookie("name", null, time() - 1000, "/", "yangbai.com"); #刪除game.yangbai.com下面自身的cookie值 setcookie("game", null, time() - 1000);
最后,希望這些簡單地總結(jié)可以幫到你,大家加油!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/30464.html
摘要:例如要想在多個二級域名中共享,需要設(shè)置為頂級域名,這樣就可以在所有二級域名里面或者到這個的值了。頂級域名只能獲取到設(shè)置為頂級域名的,設(shè)置為其他子級域名的無法獲取。 Cookie和Session詳解 Cookie Cookie只存儲在客服端 Cookie是什么:Cookies是web服務(wù)器存放在用戶硬盤的一段文本,Cookies允許一個wen站點(diǎn)在用戶的機(jī)器存放一些文本的信息,并可以在以...
摘要:不同域名不同端口不同協(xié)議,只要符合其中之一都算跨域請求同域當(dāng)請求的符合域名端口協(xié)議都相同的時候,就是同域請求同域策略是瀏覽器內(nèi)部實(shí)現(xiàn)的一種安全機(jī)制。 cookie如何設(shè)置?如何獲取? php中向?yàn)g覽器設(shè)置 cookie setcookie($key ,$val [,$expire ,$path ,$domain ,$secure]);注意:cookie只可以存字符串類型數(shù)據(jù),而且在...
摘要:用戶登錄成功之后,會與認(rèn)證中心及各個子系統(tǒng)建立會話,用戶與認(rèn)證中心建立的會話稱為全局會話,用戶與各個子系統(tǒng)建立的會話稱為局部會話。 在工作中,有這樣一個需求,因?yàn)楣居卸鄠€管理平臺,每次登錄一個平臺都需要輸入賬號和密碼進(jìn)行登錄,特別麻煩,所以,希望只需登錄一個平臺的賬號和密碼,其他平臺的不用輸入賬號和密碼也可以自動登錄,即單點(diǎn)登錄,經(jīng)過兩周的研究和實(shí)踐,終于完成了該需求,目前公司的兩個...
閱讀 3494·2023-04-25 18:14
閱讀 1602·2021-11-24 09:38
閱讀 3317·2021-09-22 14:59
閱讀 3123·2021-08-09 13:43
閱讀 2642·2019-08-30 15:54
閱讀 619·2019-08-30 13:06
閱讀 1625·2019-08-30 12:52
閱讀 2776·2019-08-30 11:13