Cookie 路径及其对子文件夹页面的可访问性
Posted
技术标签:
【中文标题】Cookie 路径及其对子文件夹页面的可访问性【英文标题】:Cookie path and its accessibility to subfolder pages 【发布时间】:2010-10-09 06:12:16 【问题描述】:假设我有一个域的网站:www.example.com
如果我使用路径“/”设置 cookie,该 cookie 将可以通过域中的所有页面访问,例如:
www.example.com/page1.html www.example.com/subfolder1/page1.html www.example.com/subfolder1/moresubfolder1/page1.html 等如果我们将 cookie 设置为路径 '/subfolder1',该 cookie 是否可用于该文件夹下的任何页面或子文件夹?例如:
www.example.com/subfolder1/moresubfolder/page1.html所以,如果不是,我想,我别无选择,只能为这些 cookie 使用路径“/”,对吧?
【问题讨论】:
【参考方案1】:如果我们将 cookie 设置为路径 '/subfolder1',该 cookie 是否可用于该文件夹下的任何页面或子文件夹?
是的。 cookie 将可用于所有页面和子目录在/subfolder1
路径内。
【讨论】:
相关规范见***.com/questions/8014024/set-cookie-wildcard-path。对于那些不知道的人,cookie 只能访问指定路径和任何子路径,而不能访问超路径。因此“/folder/”无法访问路径“/folder/subfolder1/”的cookies。我在这个上撞了一会儿。 @SampleJACK 哎呀,这很好地解释了我的问题! @Alex,那么我们如何获得一个用于/subfolder1
但不是 /subfolder1/inner-folder
的cookie?
@Pacerier 我们评论的答案是正确的,您是在问别的吗?
@SampleJACK 我们如何获得一个用于 /subfolder1 而不是 /subfolder1/inner-folder 的 cookie?【参考方案2】:
如果我们将 cookie 设置为路径 /subfolder1
,则可以访问示例中的以下页面:
www.example.com/subfolder1/page1.html www.example.com/subfolder1/moresubfolder1/page1.html 等等
但是,页面www.example.com/page1.html
将无法访问,因为它不属于允许的路径。
【讨论】:
【参考方案3】:通过重复使用this 答案的一部分来消除一些歧义:
如果至少有一个请求路径路径匹配给定的cookie路径 以下条件成立:
cookie-path 和 request-path 相同。 cookie-path 是 request-path 的前缀,cookie-path 的最后一个字符是 %x2F ("/")。 cookie-path 是 request-path 的前缀,是 request-path 中不包含在 cookie 中的第一个字符- path 是一个 %x2F ("/") 字符。
在/subfolder1
路径和/subfolder1/
路径上设置cookie 之间存在细微(但可能很重要)的区别。
如果您依赖前者,您的请求路径需要以“%x2F ("/") 字符”(正斜杠)开头,以保证所需的行为。例如,查看链接的答案。
将 cookie 路径设置为简单的 /
可以避免任何边缘情况,但正如您所说 - cookie 可以在整个域中访问。
【讨论】:
最有启发性的答案/subfolder1
和/subfolder1/
有什么区别?从链接的答案,唯一的区别是:请求路径/subfolder1KKK
也匹配cookie 路径/subfolder1
,对吧?不同的浏览器可能有不同的行为,例如IE匹配请求路径/subfolder1KKK
到cookie路径/subfolder1
,但是firefox不会,对吧?以上是关于Cookie 路径及其对子文件夹页面的可访问性的主要内容,如果未能解决你的问题,请参考以下文章