砍哥 發表於 2022-9-21 16:36:00

域名和子域名间的cookie共享和修改、删除

<strong>1.设置COOKIE</strong><br>1.1.一级域名<br>  一级域名只能设置<strong><span style="color: rgba(153, 51, 0, 1)">domain</span></strong>为一级域名,不能设置为二级域名或者三级域名等等,否则<strong><span style="color: rgba(153, 51, 0, 1)">cookie</span></strong>无法生成。<br>&nbsp;&nbsp;&nbsp;&nbsp;   如:<strong><span style="color: rgba(153, 51, 0, 1)">test.com</span></strong>能设置<strong><span style="color: rgba(153, 51, 0, 1)">domain</span></strong>为<strong><span style="color: rgba(153, 51, 0, 1)">test.com</span></strong>或者<strong><span style="color: rgba(153, 51, 0, 1)">www.test.com</span></strong>,但不能设置<strong><span style="color: rgba(153, 51, 0, 1)">domain</span></strong>为<strong><span style="color: rgba(153, 51, 0, 1)">login.test.com</span></strong>,这样<strong><span style="color: rgba(153, 51, 0, 1)">cookie</span></strong>不会生成。<br>    以下面的代码为例:<br>&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;    setcookie("name1", "<strong><span style="color: rgba(153, 51, 0, 1)">test</span></strong>", time() + 1000);            //test.com自己可以看到
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    setcookie("name2", "<strong><span style="color: rgba(153, 51, 0, 1)">test</span></strong>", time() + 1000, "/", "www.<strong><span style="color: rgba(153, 51, 0, 1)">test</span></strong>.com");  &nbsp; &nbsp; //*.www.test.com都可以看到</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    setcookie("name3", "<strong><span style="color: rgba(153, 51, 0, 1)">test</span></strong>", time() + 1000, "/", "<strong><span style="color: rgba(153, 51, 0, 1)">test</span></strong>.com");      //*.test.com都可以看到</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    setcookie("name4", "<strong><span style="color: rgba(153, 51, 0, 1)">test</span></strong>", time() + 1000, "/", "login.<strong><span style="color: rgba(153, 51, 0, 1)">test</span></strong>.com");  &nbsp; &nbsp;//设置无效</div>


&nbsp;&nbsp;&nbsp;&nbsp;   注意:<br>&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;    设置<span style="color: rgba(153, 51, 0, 1)"><strong>domain</strong></span>的时候,<strong><span style="color: rgba(153, 51, 0, 1)">.test.com</span></strong>和<strong><span style="color: rgba(153, 51, 0, 1)">test.com</span></strong>是一样的。
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    未指定<strong><span style="color: rgba(153, 51, 0, 1)">domain</span></strong>时,默认的<strong><span style="color: rgba(153, 51, 0, 1)">domain</span></strong>为用哪个域名访问就是哪个。&nbsp;&nbsp;&nbsp;&nbsp;</div>


&nbsp;&nbsp;&nbsp;&nbsp;   执行后,就可以在www.<strong><span style="color: rgba(153, 51, 0, 1)">test</span></strong>.com浏览器下看到cookie情况。<br>  总的来说,一级域名设置的<strong><span style="color: rgba(153, 51, 0, 1)">cookie</span></strong>可以共享【需要指定<strong><span style="color: rgba(153, 51, 0, 1)">domain</span></strong>主域名的<strong><span style="color: rgba(153, 51, 0, 1)">host</span></strong>】给二级域名,也可以自己私有【不指定<strong><span style="color: rgba(153, 51, 0, 1)">domain</span></strong>】。<br><br>1.2.二级域名<br>  拿game.test.com为例,代码如下:<br>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  setcookie("game", "<strong><span style="color: rgba(153, 51, 0, 1)">test</span></strong>");                    //只有自己可以看到</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  setcookie("game1", "<strong><span style="color: rgba(153, 51, 0, 1)">test</span></strong>", time() + 1000, "/", "<strong><span style="color: rgba(153, 51, 0, 1)">test</span></strong>.com");      //*.test.com都可以看到</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  setcookie("game2", "<strong><span style="color: rgba(153, 51, 0, 1)">test</span></strong>", time() + 1000, "/", "chip.game.<strong><span style="color: rgba(153, 51, 0, 1)">test</span></strong>.com"); //设置无效</div>


&nbsp;&nbsp;&nbsp;   &nbsp;执行后,就可以在game.<strong><span style="color: rgba(153, 51, 0, 1)">test</span></strong>.com浏览器下看到cookie情况。<br>  总的来说,设置cookie的话只能在本域名下或者domain级别高于自身的域名下才会生效!<br><br><strong>2.读取COOKIE</strong><br>  有了上面的例子和实践,大概的规则如下:<br>
<ul>
<li style="list-style-type: none">
<ul>
<li>二级域名能读取设置了<strong><span style="color: rgba(153, 51, 0, 1)">domain</span></strong>为一级域名或者自身的<strong><span style="color: rgba(153, 51, 0, 1)">cookie</span></strong>,不能读取其他二级域名<strong><span style="color: rgba(153, 51, 0, 1)">domain</span></strong>的<strong><span style="color: rgba(153, 51, 0, 1)">cookie</span></strong>。例如:要想<strong><span style="color: rgba(153, 51, 0, 1)">cookie</span></strong>在多个二级域名中共享,需要设置<strong><span style="color: rgba(153, 51, 0, 1)">domain</span></strong>为一级域名,这样就可以在所有二级域名里面或者到这个<strong><span style="color: rgba(153, 51, 0, 1)">cookie</span></strong>的值了。&nbsp;</li>
<li>一级域名只能获取到<strong><span style="color: rgba(153, 51, 0, 1)">domain</span></strong>设置为一级域名的<strong><span style="color: rgba(153, 51, 0, 1)">cookie</span></strong>,<strong><span style="color: rgba(153, 51, 0, 1)">domain</span></strong>设置为其他子级域名的无法获取。&nbsp;&nbsp;</li>

</ul>

</li>


</ul>


<br><strong>3.修改COOKIE</strong><br>3.1.一级域名<br>  一级域名的cookie在一级域名或者非一级域名【需要设置domain为一级域名才可以】都可以修改。代码如下:<br>
<div>    #为所有二级域名设置一个cookie</div>
<div>    setcookie("name", "<span style="color: rgba(153, 51, 0, 1)"><strong>test</strong></span>", time() + 1000, "/", "<strong><span style="color: rgba(153, 51, 0, 1)">test</span></strong>.com");</div>
<div>    #在game.test.com下面修改这个cookie值</div>
<div>    setcookie("name", "<strong><span style="color: rgba(153, 51, 0, 1)">test123</span></strong>", time() + 1000, "/", "<strong><span style="color: rgba(153, 51, 0, 1)">test</span></strong>.com");</div>


<br>3.2.二级域名<br>  修改二级域名自身生成的<strong><span style="color: rgba(153, 51, 0, 1)">cookie</span></strong>不需要设置<strong><span style="color: rgba(153, 51, 0, 1)">domain</span></strong>,直接设置即可。代码如下:<br>
<div>    #修改game.test.com下面自身的cookie值</div>
<div>    setcookie("game", "<strong><span style="color: rgba(153, 51, 0, 1)">chip</span></strong>", time() + 10000);</div>


<br><strong>4.删除COOKIE</strong><br>  删除<strong><span style="color: rgba(153, 51, 0, 1)">cookie</span></strong>理解为是修改<strong><span style="color: rgba(153, 51, 0, 1)">cookie</span></strong>的一种特殊场景,只需将<strong><span style="color: rgba(153, 51, 0, 1)">expire</span></strong>设置为过期、值设置为<strong><span style="color: rgba(153, 51, 0, 1)">null</span></strong>即可,代码如下:<br>
<div>    #删除test.com下面的cookie值</div>
<div>    setcookie("name", null, time() - 1000, "/", "<strong><span style="color: rgba(153, 51, 0, 1)">test</span></strong>.com");</div>
<div>    #删除game.test.com下面自身的cookie值</div>
<div>    setcookie("game", null, time() - 1000);</div>


<br><strong>5.总结</strong><br>对于Cookie在一级域名和子级域名间的操作基本如上所述,不同编程语言之间操作cookie的方式不同而已。<br><br>
来源:https://www.cnblogs.com/Jkinbor/p/16716135.html
頁: [1]
查看完整版本: 域名和子域名间的cookie共享和修改、删除