是否有最佳做法是否在Cookie路径的末尾设置斜杠?
是
path
比...更好
path/
以任何方式?
我发现两个版本都会产生不同的cookie,但我不知道哪个版本是首选。
答案 0 :(得分:1)
就服务器端而言,此问题(https://bugzilla.mozilla.org/show_bug.cgi?id=469678)指出:
根据RFC 2109,由Set-Cookie设置的cookie的默认路径为:
默认为生成Set-Cookie响应的请求URL的路径,最多但不包括最右边的/。
因此,这是一个不应使用斜杠的观点。
https://tools.ietf.org/html/rfc2109
不要包含结尾的“ /”。
已淘汰:2109
https://tools.ietf.org/html/rfc2965
DO 包含结尾的“ /”。
已淘汰:2965
https://tools.ietf.org/html/rfc6265#section-5.2.4
不要包含结尾的“ /”。
在客户端上,如果您使用以下代码:
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在这里错了吗?
其他参考文献:
答案 1 :(得分:0)
不,通常你不应该在cookie路径的末尾添加斜杠。唯一的例外是针对根文件夹的cookie,您应该在其中写下:
path=/
对于子文件夹,您通常应该编写(例如):
path=/Content/Web
为什么呢?大多数Web服务器认为这三个请求都指向同一个文件:
GET /Content/Web
GET /Content/Web/
GET /Content/Web/index.html
如果您的Cookie有一个如/Content/Web/
的尾部斜杠,那么它将不会被发送到上面的第一个请求。这可能会导致应用程序行为混乱。没有像/Content/Web
这样的尾部斜杠的Cookie将涵盖所有三个请求。
答案 2 :(得分:0)
我们刚刚在Iphone上看到了Safari中的一个错误,该错误中设置为无尾斜杠的cookie为空。该错误会影响我面前的三个Iphone之一,即运行IOS 11.3.1的Iphone 7。在devtools中,我们可以看到cookie的名称,但其中的值不存在。同样的问题似乎也触及this user。我们现在在cookie路径上添加斜线!