关于谷歌的 cookie 的一个问题

2019-06-12 19:27:37 +08:00
 xiaohantx
想问下我设置了一个 cookie 没有设置时间,理论上应该在会话结束时(网页关闭)就自动删了,但是为什么我关了谷歌浏览器没有删...
1576 次点击
所在节点    问与答
11 条回复
DarlingXwl
2019-06-12 23:20:20 +08:00
Chrome 官方曾说过 不想放弃用户的 cookie 数据,这种说法我有点印象。

楼主可以试着验证这种说法,也可以去查找一下相关信息。

这也许就是问题的原因。

本人说法缺乏证据,仅供参考哈。

其实比较痛苦的开发过程使用 chrome,因为 google 的缓存技术,页面时长不能得到及时的更新,所以需要常常手动清除数据,相对繁琐,又习以为然。
xiaohantx
2019-06-12 23:32:47 +08:00
@DarlingXwl #1 好像有看见相关,但是没设置时间会话结束这不是通用规则么,谷歌也太一家独大了吧....
DarlingXwl
2019-06-12 23:42:52 +08:00
@xiaohantx 这个怎么说呢,我去查一下相关信息哈。

显然 我的表诉的错误的,chrome 只是不会删除 google 相关的 cookie,原话在这里:news.ycombinator.com/item?id=1 八 064 五 37

某些原因发布了。楼主自行修改中文

所以楼主的具体原因 目前个人无法解答
Jirajine
2019-06-12 23:46:03 +08:00
用扩展 cookie auto delete
xiaohantx
2019-06-12 23:48:07 +08:00
@DarlingXwl #3 但是搜了下有些相关问题,但是并没有解答,不知道有没有别人遇见了
xiaohantx
2019-06-12 23:49:16 +08:00
@Jirajine #4 但需求上其实我是希望用户关闭页面 cookie 就自动删了,不能让用户装扩展呀,如果 cookie 不行可能只能尝试放内存里,明明过期时间谷歌自己写了会话关闭,但是却不删...
DarlingXwl
2019-06-12 23:54:18 +08:00
@xiaohantx 楼主 MAC 系统? 有种说法是:

在使用 MAC 系统的时候,关闭浏览器,会话级的 cookie 并不会删除,是因为,mac 下关闭浏览器并不是浏览器真正退出,而真正退出浏览器后,cookie 才会失效。就是说要,在 docker 工具栏那里点击 chrome 图标,然后退出浏览器。这才是真正的意义的关闭浏览器。

原话。

我还是不能自己验证的喔。因为来自百度知道,这玩意的可信度 总是在浮动……你懂的
xiaohantx
2019-06-12 23:58:47 +08:00
@DarlingXwl #7 是 mac,我还没想起来 windows 试下,我明天试下吧,谢谢啦~另外会话结束时不应该指该域名的页面关闭么= =是指浏览器退出么...
DarlingXwl
2019-06-13 00:04:10 +08:00
@xiaohantx
chrome 浏览器是多线程的,这是我喜爱的原因,我曾经也以为关闭其中一个页面,是不是相当于这个会话的进程了,那相关的 cookie 也应该去除。

事实跟你的认知与我的猜想是相反的,关闭标签页的确关闭了会话,字面意思和官方解释都不冲突,这点没有毛病。

而现实是:必须结束浏览器进程才可以自动清除 cookie 临时缓存。

而 mac 系统又有其他特殊情况。

这就是答案了。
phy25
2019-06-13 07:07:38 +08:00
http://blog.petersondave.com/cookies/Session-Cookies-in-Chrome-Firefox-and-Sitecore/

所以这种情况最佳实践是用 sessionStorage,跟 session cookie 不一样的。
msg7086
2019-06-13 07:34:32 +08:00
#9 遇到歧义当然是 RFC 说话。

RFC6265 HTTP State Management Mechanism

Unless the cookie's attributes indicate otherwise, the cookie is
returned only to the origin server (and not, for example, to any
subdomains), and it expires at the end of the current session (as
defined by the user agent). User agents ignore unrecognized cookie
attributes (but not the entire cookie).

其中“ it expires at the end of the current session (as defined by the user agent)”,意思是浏览器可以自行决定什么是“会话结束”。对于大多数多窗口浏览器来说,浏览器完全退出才是会话结束。只是关闭一个标签或窗口并不算会话结束,否则假如你同一个网站开了 5 个窗口,关掉一个就把另外 4 个的会话给退出了,岂不是乱套了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/573328

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX