资讯专栏INFORMATION COLUMN

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

avwu / 1982人阅读

摘要:执行后,在浏览器的情况如下图二级域名和浏览器的情况如下图总的来说,顶级域名设置的可以共享需要指定主域名的给二级域名,也可以自己私有不指定。顶级域名只能获取到设置为顶级域名的,设置为其他子级域名的无法获取。

最近项目中刚好涉及到了主域名和子域名之间的共享和相互修改、删除,也就借此机会总结一下常用的几个场景,这里代码以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情况如下图:

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

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30464.html

相关文章

  • CookieSession详解

    摘要:例如要想在多个二级域名中共享,需要设置为顶级域名,这样就可以在所有二级域名里面或者到这个的值了。顶级域名只能获取到设置为顶级域名的,设置为其他子级域名的无法获取。 Cookie和Session详解 Cookie Cookie只存储在客服端 Cookie是什么:Cookies是web服务器存放在用户硬盘的一段文本,Cookies允许一个wen站点在用户的机器存放一些文本的信息,并可以在以...

    Little_XM 评论0 收藏0
  • PHPcookie与session使用

    摘要:不同域名不同端口不同协议,只要符合其中之一都算跨域请求同域当请求的符合域名端口协议都相同的时候,就是同域请求同域策略是浏览器内部实现的一种安全机制。 cookie如何设置?如何获取? php中向浏览器设置 cookie setcookie($key ,$val [,$expire ,$path ,$domain ,$secure]);注意:cookie只可以存字符串类型数据,而且在...

    DTeam 评论0 收藏0
  • 同源策略与跨域

    摘要:简单地理解就是因为同源策略的限制,它是浏览器为了安全性考虑一种非常重要的策略,域名下的无法操作或是域名下的对象。同源策略会限制以下三种行为和无法读取。例如中可以引用等资源,此类操作不受同源策略限制。 同源策略 同源策略same origin policy中的重要内容就是URL(uniform resource locator),统一资源定位符,俗称网址。URL中的resource资源就...

    xavier 评论0 收藏0
  • 单点登录实现原理及小结

    摘要:用户登录成功之后,会与认证中心及各个子系统建立会话,用户与认证中心建立的会话称为全局会话,用户与各个子系统建立的会话称为局部会话。 在工作中,有这样一个需求,因为公司有多个管理平台,每次登录一个平台都需要输入账号和密码进行登录,特别麻烦,所以,希望只需登录一个平台的账号和密码,其他平台的不用输入账号和密码也可以自动登录,即单点登录,经过两周的研究和实践,终于完成了该需求,目前公司的两个...

    TigerChain 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<