【问题标题】:Session cookies and persistent cookies会话 cookie 和持久性 cookie
【发布时间】:2013-03-06 07:38:37
【问题描述】:

据我所知,会话 cookie 存储在浏览器的进程中(在内存中,而不是在硬盘中)。当用户关闭浏览器时,这些cookies被释放,我们无法再次获取这些cookies。所以这种cookie是用来保存session id的。

持久性 cookie 保存在硬盘上。他们一直活着,直到他们过期。通常,我们通过设置过期时间来创建这些 cookie。

所以我的疑问是:

  1. 如果我们设置一个没有过期时间的cookie,这个cookie会被当作会话cookie处理吗?它会保存在浏览器的进程中吗?

  2. 具有过期时间的cookie必须被视为持久cookie吗?我们可以在浏览器进程中设置一个过期时间的cookie吗?

  3. 我们能否让会话 cookie 不出现在浏览器进程中?让它留在磁盘上?如果可以,如何编码,php/asp.net/java ??

【问题讨论】:

  • 会话也保存在用户的机器上。只有当浏览会话过期时它们才会过期。这就是会话不应保存敏感数据的原因,因为它们可能被劫持。甚至不必费心学习如何创建无限会话。在某些情况下,它们可以坚持浏览会话,但这是不好的做法,不值得学习
  • 会话保存在用户的机器上??会话保存在服务器上。
  • @user1928545 会话 cookie 保存在用户计算机上,但真实数据保存在服务器上的文本文件中,该文本文件使用用户拥有的会话 cookie 的名称。例如,用户会话 id = vv1gdmflejj4lco1m6hfju7ub0 服务器有文本文件 = sess_vv1gdmflejj4lco1m6hfju7ub0
  • 你是对的@Class,但会话 ID 保存在计算机上。这些问题表明他认为会话 cookie 存储在内存中而不是硬盘上,但事实并非如此。信息是,但密钥仍在硬盘上。它可以被劫持。
  • 可以,但是很容易将HTTPonly添加到会话cookie中。

标签: java php asp.net cookies session-cookies


【解决方案1】:

就我而言,我们从服务器发送回客户端的内容存储在用户的硬盘中,如您所说的persistent cookie。 session cookie 存储了您与网站进行的对话的一些信息,在您清除缓存或重新启动浏览器后,对话信息发生了变化。当您访问一个网站时,您不会将 session_id 发送到服务器,因为您还没有。然后服务端生成一个session_id并将会话信息存储在服务端,session_id作为key-value对,并将session_id返回给客户端,客户端存储在persistent cookies中。这是我眼中的过程。

【讨论】:

  • quote:session_id 作为服务器端的键值对,并将 session_id 返回给客户端,客户端存储在持久性 cookie 中。我不这么认为,session_id 存储在会话 cookie 中,它在浏览器的进程中。
  • @roast_soul 当我使用 servlet 时,我发现它是这样工作的。当从客户端发送的请求在 cookie 中没有会话 id 时,会在服务器端生成会话 id。
  • @roast_soul 或者类似的东西:所谓的session id是在浏览器中生成并存储在客户端的会话cookie中,但是servlet有自己的会话机制,所以它创建了自己的@ 987654325@(类似的东西),它存储在客户端的持久cookie和服务器端,用于存储信息以及跟踪浏览器。
  • 你用的是chrome开发者工具还是firebugs?
  • @roast_soul 是的,当我向服务器发送第一个请求时,它的 cookie 中没有 jsessionid。但是当响应发送回来时,它的cookie中有一个jsessionid。
猜你喜欢
  • 2016-04-24
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 2012-08-17
  • 1970-01-01
  • 2016-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多