总结一下顶级域名和子级域名之间的cookie共享和相互修改、删除

最近项目中刚好涉及到了主域名和子域名之间的共享和相互修改、删除,也就借此机会总结一下常用的几个场景,这里代码以PHP为例来说明,域名的话就拿顶级域名和二级域名为例,其他的场景都是类似哈!

设置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.comgame.yangbai.com浏览器的cookie情况如下图:

clipboard.png

总的来说,顶级域名设置的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);

最后,希望这些简单地总结可以帮到你,大家加油!


yangbai
如果非要用一种东西来记录我得生命历程,我会用朋友!

良好的心里,出众的发挥!

2.8k 声望
43 粉丝
0 条评论
推荐阅读
利用Charles做代理测试电脑上写的H5页面
做H5页面的同学可能经常会遇到一个场景,就是电脑上调试好的页面怎么在手机上访问测试呢? 下面就介绍一种自己经常使用的方式,利用Charles代理软件来实现! 安装Charles 直接去官网下载对应的系统版本安装即可。...

杨佰2阅读 5.9k

php实现只需要一个QQ号就可以获得用户信息
{代码...} DEMO:[链接]此处输入你的QQ号

TANKING27阅读 7.3k评论 5

初学后端,如何做好表结构设计?
这篇文章介绍了设计数据库表结构应该考虑的4个方面,还有优雅设计的6个原则,举了一个例子分享了我的设计思路,为了提高性能我们也要从多方面考虑缓存问题。

王中阳Go4阅读 1.7k评论 2

封面图
一分钟搞明白!快速掌握 Go WebAssembly
最近因为各种奇怪的原因,更多的接触到了 WebAssembly。虽然之前很多博客也翻过写过各种文章,但总感觉欠些味道。于是今天梳理了一版,和大家一起展开学习。

煎鱼4阅读 2.1k

面试官:请说一下如何优化结构体的性能?
使用内存对齐机制优化结构体性能,妙啊!前言之前分享过2篇结构体文章:10秒改struct性能直接提升15%,产品姐姐都夸我好棒 和 Go语言空结构体这3种妙用,你知道吗? 得到了大家的好评。这篇继续分享进阶内容:结...

王中阳Go4阅读 3.7k评论 2

封面图
Laravel入门及实践,快速上手ThinkSNS+二次开发
【摘要】自从ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都说技术门槛抬高了,其实你与TS+的距离仅仅只是学习一个新框架而已,所以,我们今天来说说Laravel的入门。

ThinkSNS1阅读 2.4k

我让chatGPT用PHP写一个MVC框架,不仅写出来,还能跑!
没想到写出来的框架确实挺简单的,但是又没觉得哪里不对,于是我尝试把这个框架放到服务器试试能不能跑起来,最后还真的可以跑起来,为了让大家能够看到这个框架的演示,我直接爬一个热搜,然后便于展示数据。

TANKING1阅读 1.7k

封面图

良好的心里,出众的发挥!

2.8k 声望
43 粉丝
宣传栏