为什么Chrome会将__RequestVerificationCookie存储为localhost,而不存储其他Cookie?

时间:2016-11-03 18:28:14

标签: asp.net google-chrome cookies

每个人都声称一个域必须有两个点才能存储cookie,但这不可能是真的,因为Chrome存储了通过ASP.NET的Set-Cookie头收到的名为“__RequestVerificationToken”的烹饪;但是,它拒绝存储其他cookie。我确实发送了一个几乎完全相同的Set-Cookie标题的几乎相同的cookie,但Chrome拒绝存储它。路径是“/”,就像另一条路径一样。没有设置域名。唯一的区别是名称。 Chrome会给“__RequestVerificationToken”一些特殊待遇吗?

1 个答案:

答案 0 :(得分:0)

看起来Chrome会保存"会话"饼干为" localhost",但不是"永久性"饼干。不知道为什么它为" session"饼干,但"永久性"由于cookie仅应存储在二级域(至少有2个点的域,而localhost不存在的域),因此不存储这些域。

"永久" cookies是设置过期日期的cookie,这有点违反直觉,但它们是永久性的#34;从某种意义上说,它们可以在浏览器重启时生存,而不像" session"浏览器关闭时应删除的cookie。实际上,它们都是相对永久性的,因为Chrome / Firefox通常不会在浏览器关闭时删除会话cookie,这要归功于"继续我离开的地方"和#34;在浏览器重新启动时恢复我的选项卡"。

另一个要点是,我们也可能根本没有在任何类型的会话或auth cookie上设置过期,因为它具有以下优点:1。它适用于localhost,2。它更安全,因为它们是在浏览器关闭时被删除的可能性,以及3.如果用户已配置浏览器,它们仍会在浏览器会话中保持不变,因此设置长超时是不必要的。在cookie上设置过期也无论如何也没有任何好处,因为它只是与服务器端会话同步的另一个值,该值不会随cookie一起发送到服务器无论如何,它是无用的,并且无论如何,令牌(存储在会话或数据库中)的服务器端到期都是权威的。因此,请勿在您的会话或与身份验证相关的Cookie上设置到期日期。