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 路径及其对子文件夹页面的可访问性的主要内容,如果未能解决你的问题,请参考以下文章

Web 表单上帮助文本的可访问性最佳实践

cookie及其常用属性值

javascript6 cookie

.简述Cookie的安全性及其作用,以及如何处理Cookie。

div 按钮可访问性可点击

apache的配置文件中,哪个字段定义了访问日志的路径