域名和子域名间的cookie共享和修改、删除
1.设置COOKIE
1.1.一级域名
一级域名只能设置domain为一级域名,不能设置为二级域名或者三级域名等等,否则cookie无法生成。
如:test.com能设置domain为test.com或者www.test.com,但不能设置domain为login.test.com,这样cookie不会生成。
以下面的代码为例:
setcookie("name1", "test", time() + 1000); //test.com自己可以看到
设置domain的时候,.test.com和test.com是一样的。
总的来说,一级域名设置的cookie可以共享【需要指定domain主域名的host】给二级域名,也可以自己私有【不指定domain】。
1.2.二级域名
拿game.test.com为例,代码如下:
总的来说,设置cookie的话只能在本域名下或者domain级别高于自身的域名下才会生效!
2.读取COOKIE
有了上面的例子和实践,大概的规则如下:
3.修改COOKIE
3.1.一级域名
一级域名的cookie在一级域名或者非一级域名【需要设置domain为一级域名才可以】都可以修改。代码如下:
3.2.二级域名
修改二级域名自身生成的cookie不需要设置domain,直接设置即可。代码如下:
4.删除COOKIE
删除cookie理解为是修改cookie的一种特殊场景,只需将expire设置为过期、值设置为null即可,代码如下:
5.总结
对于Cookie在一级域名和子级域名间的操作基本如上所述,不同编程语言之间操作cookie的方式不同而已。
1.1.一级域名
一级域名只能设置domain为一级域名,不能设置为二级域名或者三级域名等等,否则cookie无法生成。
如:test.com能设置domain为test.com或者www.test.com,但不能设置domain为login.test.com,这样cookie不会生成。
以下面的代码为例:
setcookie("name1", "test", time() + 1000); //test.com自己可以看到
setcookie("name2", "test", time() + 1000, "/", "www.test.com"); //*.www.test.com都可以看到
setcookie("name3", "test", time() + 1000, "/", "test.com"); //*.test.com都可以看到
setcookie("name4", "test", time() + 1000, "/", "login.test.com"); //设置无效
注意:设置domain的时候,.test.com和test.com是一样的。
未指定domain时,默认的domain为用哪个域名访问就是哪个。
执行后,就可以在www.test.com浏览器下看到cookie情况。总的来说,一级域名设置的cookie可以共享【需要指定domain主域名的host】给二级域名,也可以自己私有【不指定domain】。
1.2.二级域名
拿game.test.com为例,代码如下:
setcookie("game", "test"); //只有自己可以看到
setcookie("game1", "test", time() + 1000, "/", "test.com"); //*.test.com都可以看到
setcookie("game2", "test", time() + 1000, "/", "chip.game.test.com"); //设置无效
执行后,就可以在game.test.com浏览器下看到cookie情况。总的来说,设置cookie的话只能在本域名下或者domain级别高于自身的域名下才会生效!
2.读取COOKIE
有了上面的例子和实践,大概的规则如下:
-
- 二级域名能读取设置了domain为一级域名或者自身的cookie,不能读取其他二级域名domain的cookie。例如:要想cookie在多个二级域名中共享,需要设置domain为一级域名,这样就可以在所有二级域名里面或者到这个cookie的值了。
- 一级域名只能获取到domain设置为一级域名的cookie,domain设置为其他子级域名的无法获取。
3.修改COOKIE
3.1.一级域名
一级域名的cookie在一级域名或者非一级域名【需要设置domain为一级域名才可以】都可以修改。代码如下:
#为所有二级域名设置一个cookie
setcookie("name", "test", time() + 1000, "/", "test.com");
#在game.test.com下面修改这个cookie值
setcookie("name", "test123", time() + 1000, "/", "test.com");
3.2.二级域名
修改二级域名自身生成的cookie不需要设置domain,直接设置即可。代码如下:
#修改game.test.com下面自身的cookie值
setcookie("game", "chip", time() + 10000);
4.删除COOKIE
删除cookie理解为是修改cookie的一种特殊场景,只需将expire设置为过期、值设置为null即可,代码如下:
#删除test.com下面的cookie值
setcookie("name", null, time() - 1000, "/", "test.com");
#删除game.test.com下面自身的cookie值
setcookie("game", null, time() - 1000);
5.总结
对于Cookie在一级域名和子级域名间的操作基本如上所述,不同编程语言之间操作cookie的方式不同而已。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 分享4款.NET开源、免费、实用的商城系统
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库