Cookies 在cookie路径上设置斜杠?

Cookies 在cookie路径上设置斜杠?,cookies,Cookies,是否在cookie路径的末尾设置斜杠有最佳实践? 是 路径 胜过 path/ 无论如何? 我发现两个版本都会产生不同的cookie,但我不知道哪个版本更可取。不,一般来说,您不应该在cookie路径的末尾加斜杠。唯一的例外是针对根文件夹的Cookie,您应该在其中写入: path=/ 对于子文件夹,通常应编写(例如): 为什么??大多数Web服务器认为这三个请求都指向同一个文件: GET /Content/Web GET /Content/Web/ GET /Content/Web/index

是否在cookie路径的末尾设置斜杠有最佳实践? 是
路径
胜过
path/
无论如何?
我发现两个版本都会产生不同的cookie,但我不知道哪个版本更可取。

不,一般来说,您不应该在cookie路径的末尾加斜杠。唯一的例外是针对根文件夹的Cookie,您应该在其中写入:

path=/
对于子文件夹,通常应编写(例如):

为什么??大多数Web服务器认为这三个请求都指向同一个文件:

GET /Content/Web
GET /Content/Web/
GET /Content/Web/index.html

如果cookie的尾部有斜杠,如
/Content/Web/
,则不会将其发送到上面的第一个请求。这可能会导致混淆应用程序行为。没有尾部斜杠的cookie(如
/Content/Web
)将覆盖所有三个请求。

我们刚刚在Iphone上的Safari中看到一个bug,没有尾部斜杠的cookie集是空的。这个bug影响了我面前的三款Iphone中的一款,一款运行IOS 11.3.1的iPhone7。在devtools中,我们可以看到cookie的名称,但不存在值。同样的问题似乎也发生了。我们现在在cookie路径上添加尾部斜线

就服务器端而言,此问题()说明:

根据RFC 2109,当设置cookie时,cookie的默认路径为:

默认为生成Set-Cookie响应的请求URL的路径,最多为但不包括最右边的/

所以这是一个不应该使用尾随斜杠的透视图


RFC历史记录 RFC2109,1997年2月,HTTP状态管理机制

  • 请参见4.3.1解释设置Cookie
  • 默认为生成Set-Cookie响应的请求URL的路径,最多为但不包括最右边的/
不要包含尾随的“/”

RFC 29652000年10月,HTTP状态管理机制 淘汰:2109

  • 见3.3.1解释Set-Cookie2
  • 默认为生成Set-Cookie2响应的请求URL的路径,最多包括最右边的/
包括尾随“/”

RFC6265,2011年4月,HTTP状态管理机制 淘汰:2965

  • 见5.1.4。路径与路径匹配
  • -三,。如果uri路径包含的字符不超过一个%x2F(“/”),则输出%x2F(“/”)并跳过其余步骤
  • -四,。输出uri路径的字符,从第一个字符到但不包括最右边的%x2F(“/”)
不要包含尾随的“/”


客户端测试 在客户端上,如果使用以下代码:

document.cookie="a=1"
您可以通过检查每个浏览器的devtools获得这些结果(我的站点有一个window.location.pathname=“/selenium/tests/testCustomizeColumnsPage.html”)

那么Chrome在这里错了吗


其他参考资料:


您忘记提及RFC6265第5.1.4段。与用户代理默认路径计算算法相关,而不是与服务器响应相关。这不是服务器无法发送的内容。另请参见路径语法
path value=
Firefox/64确实设置了尾部斜杠。但是Firefox/69没有!升级firefox后,我们的客户端现在有两个cookie。一个用于
/path/
(来自旧版本)和
/path
(来自新版本)。伟大的注意到了IE 11的相同效果。虽然似乎没有办法检查保存的cookie,但如果设置了尾部斜杠,它们就不会被读取。
document.cookie="a=1"
Chrome/71.0.3578   /selenium/tests
Firefox/64.0       /selenium/tests/
Edge               /selenium/tests/
IE11               devtools doesn't show cookies, think the path includes the trailing '/'