cookie和session

77 阅读3分钟

 Cookie vs Session

最近在学习nodejs,对于视频教程上讲解的cookie和session理解的不太透,所以查了一些资料,有所体会现在把所理解的分享出来。

1. 为什么会出现cookie和session

由于HTTP协议是无状态的,也就是说不会记录客户端和服务端的的连接信息,最简单的例子就是用户登录后,如果没有连接信息的话,短时间内访问一个网站的不同页面,每打开一个新的页面都要重新登录,对于用户来说这是不可能被接受的。所以需要一种机制来记录用户的信息,和用户状态。这样当用户在访问新的页面时,服务会反应过来,哦这个影虎已经登录过了,所以不需要在进行登录操作。

2. cookie

  cookie是客户端请求服务器时,服务端记录的用户信息,存储在客户端,下一次客户端发送请求时会将cookie一起发送。当客户端访问web服务器时,服务器会设置一个cookie返回给客户端,然后存储在客户端也就是我们的cookie信息,当用户下一次再请求web服务器时将会将cookie信息带上再发送给服务器,服务器通过cookie判断用户是否访问过该网站。   cookie是又时限的,有一个属性maxAge可以设置cookie的存储时间,超过时间后cookie会被删除,默认的是浏览器关闭时清除cookie。cookie一般用于用户的自动登录,记住密码等,将账户信息保存在cookie中,登录时cookie被传送到服务器完成自动登录。   cookie很方便但是由于用户信息存储在客户端,数据非常容易被伪造,那么一些重要的数据就不能存放在 cookie 中了,而且如果 cookie 中数据字段太多会影响传输效率。为了解决这些问题,就产生了 session,session 中的数据是保留在服务器端的。    avatar

3. session

session同样是用来存储用户信息的,它存储在服务端,能够存储的数据比较大,而且很安全,那么为什么session这么好还要用cookie呢?现在所讲的session并不是能够单独存在的,它和cookie是相依赖的,session的运作是通过一个sessionid来进行,而这个sessionid通常放在客户端的 cookie 中。

通常来说session运转也就是在你访问一个用session的网站时,第一次访问时服务返回cookie中会存储一个sessionid,用户再次访问时客户端向服务器发送这个sessionid,有了sessionid之后通过查找这个sessionid对应的session信息,然后将用户信息返回给客户端。简单的来形容session存储在服务器中类似超市的储物柜,你来存东西按下存的按钮后,会给你一个开柜子的条形码(钥匙),这把钥匙也就是我们现在所说的session_id,当你买完东西后再次来开柜子时,你用你的钥匙只能开你那个柜子,而开不开别人的,别人也打开你的柜子,那么柜子里的东西就是你存的东西(存储在服务器中的相关信息)。    不知道这样讲合不合适 。 哈哈0.0

盗图哈哈哈