cookie和session的区别

128 阅读2分钟

《用得上的前端知识》系列 - 你我都很忙,能用100字说清楚,绝不写万字长文

基本概念

cookie:HTTP Cookie(也叫 Web Cookie或浏览器 Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上

session:客户端请求服务端,服务端会为这次请求创建一个 Session 对象,用于存储客户端在同一个会话期间的一些操作记录。当客户端关闭会话,或者 Session 超时失效时会话结束。

Cookie和Session的执行流程

  • 浏览器向服务器发起请求;
  • 服务器检查报文中是否携带名为 JSESSIONID 的 cookie;
  • 如果有,根据 JSESSIONID 的值到服务器的 session 池中找出 ID 与该值相等记录,并执行相应的逻辑处理,然后给客户端返回结果;
  • 如果没有,服务器将自动创建一个 session 对象,然后把 sessionId 的值通过响应报文的 Set-Cookie 字段带给浏览器;
    • Set-Cookie: JSESSIONID=sessionId的值。
  • 浏览器收到响应后,浏览器将 Set-Cookie 的值保存起来,在下次请求时,通过请求头的 Cookie 字段带给服务器。
    • Cookie: JSESSIONID=xxxx

Cookie和Session的区别与联系

区别

  • 作用范围不同,Cookie 保存在客户端(浏览器),Session 保存在服务器端;
  • 存取方式的不同,Cookie 只能保存 ASCII,Session 可以存任意数据类型;
  • 有效期不同,Cookie 可设置为长时间保持,Session 一般失效时间较短,客户端关闭或者 Session 超时都会失效;
  • 隐私策略不同,Cookie 存储在客户端,比较容易遭到窃取;Session 存储在服务端,安全性相对 Cookie 要好一些;
  • 存储大小不同, 每个域名只能存储 4K 大小的 cookies;Session 则没有限制,但出于性能的考虑,也不应过大、过多。

联系

  • session虽然存放在服务器端,但是依赖于cookie。

参考资料