作者: | 来源:互联网 | 2024-10-17 19:17
上篇文章中说:COOKIE必须在同一网站
下且COOKIE的path路径为当前url或者是当前url的父级
时才是共享的。
具体怎么理解呢?看下面解释
首页介绍下php中设置COOKIE的函数setCOOKIE()
setCOOKIE(name,value,expire,path,domain,secure)
需要注意的且常用的有俩点
- expire:可选。规定 COOKIE 的过期时间。time()+3600 将设置 COOKIE 的过期时间为1小时。如果这个参数没有设置,那么 COOKIE 将在
session
结束后(即浏览器关闭时)自动失效。和我们上篇文章中说的一样:如果不设置过期时间的话,客户端中expire显示的是session。
- path:可选。规定 COOKIE 的服务器路径。如果路径设置为 “/”,那么该COOKIE 将在整个域名内有效。如果路径设置为 “/test/”,那么 该COOKIE 将在 test 目录下及其所有子目录下有效,也就是/test和/test/aa目录下有效,也就是子目录能获取到父级目录的COOKIE,父级目录的COOKIE在子目录下共享。。
默认的路径值是 COOKIE 所处的当前目录,但我测试默认的路径值是 COOKIE 所处目录的上级目录
。
做几个测试就知道了,主要测试以下几点
- COOKIE不设置路径,默认path是当前目录还是当前目录的上级目录?
- 如果某COOKIE路径设置为 “api/test”,那么在该目录下能够获取到在 /api/test ,/api和/目录内的COOKIE,这3目录下该COOKIE可以共享
- 写一个api,路由为 /api。
设置一个COOKIE变量a,以我们上面的预测,客户端的path应为 /
public function test(){
setCOOKIE('a',111);
echo 1;
}
- 浏览器访问该api
看到path为 /,也就是说在整个域名内任何path的COOKIE都应该能访问该COOKIE变量a
- 在写一个api,路由为 /api/test/COOKIE
设置一个COOKIE变量b,以我们上面的预测,该COOKIE变量b的path应为/api/test,而且应该包含path为/api/test,/api和/的COOKIE变量,也就是包含我们上面设置的COOKIE变量a
public function COOKIE(){
setCOOKIE('b',222);
echo 2;
}
- 访问该api
发现path确实/api/test,证明我么的第一个观点,而发现能共享COOKIE变量a,也证明了我们的第二个观点。
-
那么反向验证下,此时第一个api还是只能访问COOKIE变量a,而不能访问COOKIE变量b。发现证明是正确的