【2020-11-04】session和cookie的区别总结

cookie:

特征:

  1. Cookie是存储在客户端的。
  2. Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息。
  3. Cookie具有不可跨域名性(浏览器访问百度不会带上谷歌的cookie)。
  4. 会话Cookie(一般存在内存)和持久Cookie(一般存在硬盘)。

创建:

       用户A购买了一件商品放入购物车内,当用户B也购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。

       客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie,客户端会把Cookie保存起来。

       当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。




session:

特征:

  1. Session是存储在服务器端的,理论上是没有是没有限制,只要你的内存够大。
  2. Session是在无状态的HTTP协议下,服务端记录用户状态时用于标识具体用户的机制。
  3. Session 的运行依赖Session ID,而 Session ID 是存在 Cookie 中的,也就是说,如果浏览器禁用了 Cookie,Session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 Session ID)。
  4. 用户验证这种场合一般会用 Session。因此,维持一个会话的核心就是客户端的唯一标识,即Session ID。
  5. session是基于Cookie技术实现,重启浏览器后再次访问原有的连接依然会创建一个新的session,因为Cookie在关闭浏览器后就会消失,但是原来服务器的Session还在,只有等到了销毁的时间会自动销毁

创建:

       当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了sessionId,如果已包含则说明以前已经为此客户端创建过session。

       服务器就按照sessionId把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含sessionId,则为此客户端创建一个session并且生成一个与此session相关
联的sessionId。

       sessionId的值是一个既不会重复,又不容易被找到规律以仿造的字符串,这个sessionId将被在本次响应中返回给客户端保存。




共同点:

  1. Cookie和Session都是会话跟踪技术

猜你喜欢

转载自blog.csdn.net/qq_26079939/article/details/109489700