cookies – 在cookie路径上设置斜杠?

是否最佳做法是在cookie路径的末尾设置斜杠?

路径

比…更好

路径/

以任何方式?

我发现两个版本都会产生不同的cookie,但我不知道哪个版本是首选. 最佳答案 就服务器端而言,这个问题(
https://bugzilla.mozilla.org/show_bug.cgi?id=469678)指出:

Per RFC 2109 the default path of a cookie when set by Set-Cookie is:

Defaults to the path of the request URL that generated the Set-Cookie response, up to, but not including, the right-most /.

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

RFC历史

RFC 2109,1997年2月,HTTP状态管理机制

https://tools.ietf.org/html/rfc2109

>请参阅4.3.1解释Set-Cookie
>默认为生成Set-Cookie响应的请求URL的路径,最多但不包括最右侧/.

不要包含尾随’/’.

RFC 2965,2000年10月,HTTP状态管理机制

已淘汰:2109

https://tools.ietf.org/html/rfc2965

>参见3.3.1解释Set-Cookie2
>默认为生成Set-Cookie2响应的请求URL的路径,最多包括最右边的/.

请包括尾随’/’.

RFC 6265,2011年4月,HTTP状态管理机制

已淘汰:2965

https://tools.ietf.org/html/rfc6265#section-5.2.4

>见5.1.4.路径和路径匹配
> -3.如果uri-path包含不超过一个%x2F(“/”)字符,则输出%x2F(“/”)并跳过剩余步骤.
> -4.输出uri-path的字符,从第一个字符开始,但不包括最右边的%x2F(“/”).

不要包含尾随’/’.

客户测试

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

document.cookie="a=1"

你从每个浏览器检查devtools得到这些结果(我的网站有一个window.location.pathname =“/ selenium / tests / testCustomizeColumnsPage.html”)

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 '/'

Chrome也错了吗?

其他参考:

> https://github.com/salesforce/tough-cookie/commit/d78d3a3593d1aea1d821d45492297ddf2e990568
> https://bugzilla.mozilla.org/show_bug.cgi?id=414582
> https://bugzilla.mozilla.org/show_bug.cgi?id=469678
> https://bugzilla.mozilla.org/show_bug.cgi?id=537207

点赞