Session vs Cookie,有什么区别?

时间:2019-12-28 02:22:11

标签: node.js

我有一个关于节点上的会话和Cookie的问题,关于它们的存储位置以及它们的工作方式。

首先,我了解以下事实:

  1. 使用cookie,可以指定存储数据的时间;
  2. 打开浏览器时,会话会保存数据;
  3. Cookie在客户端;
  4. 会话在服务器端;

然后出现以下问题:

  1. 浏览器和/或服务器如何知道用户已经 登录并且不需要再次登录?
  2. 如果会话保留在cookie中,有什么区别?
  3. cookies存储在哪里?在网络浏览器中?

我使用(Blackberry?)护照(浏览器?),但它本身可以完成所有操作。我想更好地了解它在后台的工作方式。

我的肯定是错误的。您可以纠正我,但请向我解释

2 个答案:

答案 0 :(得分:0)

首先,一些一般事实。

cookie存储在浏览器中,然后随着对该服务器的每个请求发送回目标服务器。

cookie可以包含实际状态数据(例如backgroundColor=blue),也可以仅包含仅对服务器有意义的令牌。

由谁设置cookie决定他们希望cookie持续多久才能“过期”。如果服务器设置了cookie(因为也可以从网页的Javascript中设置cookie),则服务器将决定它们希望cookie持续多长时间。

服务器会话由服务器创建一个唯一的令牌并将其放入为该浏览器设置的cookie中。同时,它还会创建一个存储在服务器上的会话对象,并创建一种将令牌与特定会话对象相关联的方法,以便当请求进入并且其中包含特定令牌时,服务器可以找到该令牌。相应的会话对象。

注意,会话不必使用cookie。他们还可以在URL本身中添加一个会话ID,该ID有时会被使用,但是由于多种原因它并不受欢迎。

  

浏览器和/或服务器如何知道用户已经登录并且不需要再次登录?

如果服务器在传入请求中找到适当的cookie,并且在服务器端会话存储中找到关联的会话对象,并且该会话对象都已登录但未登录,则服务器可以认为浏览器已经登录。过期。

  

如果会话保留在cookie内,为什么会有这种区别?

通常,在使用服务器端会话时,cookie中的所有内容都是唯一的令牌-并非任何实际的会话数据。

  

cookie存储在哪里?在我们的浏览器中?

是的,浏览器将其存储在您的硬盘驱动器上,然后将其作为http头以及与Cookie关联的服务器的每个请求一起发送。

答案 1 :(得分:0)

关于您理解为真实的内容:

  1. 是的,在设置Cookie时,您可以指定将其保留多长时间。在文章HTTP Cookies in Node.js中,请参阅标题为 “ 添加具有到期时间的Cookie ”。
  2. 是的,数据可以存储在 会话(如果已被应用程序代码明确放置在会话中)。您的服务器软件也可以使用它来存储其他信息。这里 是a nice short YouTube video on node.js sessions
  3. Cookie存储在计算机上的文件中,该文件由您的网站管理
    浏览器,再次正确。这是一篇很好的文章,其中有更详细的解释:Cookies - Information that websites store on your computer

关于您的其他问题:

  

浏览器和/或服务器如何知道用户已经   登录并且不需要再次登录?

通常可以通过在您的浏览器中存储一个cookie来了解这一点,该cookie的值是某种会话ID,用作身份验证令牌。成功通过身份验证后,每次您向服务器发出请求时,它将存储一个cookie并将该cookie的值作为HTTP标头或URL字符串的一部分等发送。该令牌以某种形式的到期时间存储在服务器上,通常为15至60分钟。每次成功请求后,到期计时器都将重置为零。例如,如果会话超时为30分钟,则在30分钟内未发出请求后,令牌将无效。因此,如果您离开计算机一个小时然后尝试访问另一个页面,则可能会被告知您需要再次登录。

  

如果会话保留在cookie中,有什么区别?

正如我在上一个问题的答案中所述,身份验证令牌通常存储为cookie,并随每个请求一起发送。最好反复使用直到会话超时。

因此,区别是:会话存储在服务器上。 Cookie由浏览器作为文件存储在您的计算机上。会话cookie存储在您的计算机上,服务器使用该cookie来跟踪各个用户会话。

  

cookie存放在哪里?在网络浏览器中?

是的,如上所述,Cookie存储在计算机上的文件中,该文件由Web浏览器管理。有关更多详细信息,请参见我上面链接的文章。