美文网首页
cookie中path路径探讨

cookie中path路径探讨

作者: PENG先森_晓宇 | 来源:发表于2019-11-21 13:39 被阅读0次

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

    首页介绍下php中设置cookie的函数setcookie()

    setcookie(name,value,expire,path,domain,secure)
    
    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

    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,也证明了我们的第二个观点。


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


      image

    相关文章

      网友评论

          本文标题:cookie中path路径探讨

          本文链接:https://www.haomeiwen.com/subject/nuxtwctx.html