热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

cookie中path路径探讨

上篇文章中说:cookie必须在同一网站下且cookie的path路径为当前url或者是当前url的父级时才是共享的。具体怎

上篇文章中说:COOKIE必须在同一网站下且COOKIE的path路径为当前url或者是当前url的父级时才是共享的。
具体怎么理解呢?看下面解释

首页介绍下php中设置COOKIE的函数setCOOKIE()

setCOOKIE(name,value,expire,path,domain,secure)
COOKIE中path路径探讨
image

需要注意的且常用的有俩点

  • 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可以共享
  1. 写一个api,路由为 /api。

设置一个COOKIE变量a,以我们上面的预测,客户端的path应为 /

    public function test(){
        setCOOKIE('a',111);
        echo 1;
    }
  1. 浏览器访问该api

看到path为 /,也就是说在整个域名内任何path的COOKIE都应该能访问该COOKIE变量a

COOKIE中path路径探讨
image
  1. 在写一个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;
    }
  1. 访问该api

发现path确实/api/test,证明我么的第一个观点,而发现能共享COOKIE变量a,也证明了我们的第二个观点。

COOKIE中path路径探讨
image
  1. 那么反向验证下,此时第一个api还是只能访问COOKIE变量a,而不能访问COOKIE变量b。发现证明是正确的

    COOKIE中path路径探讨
    image

推荐阅读
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有