cookie与session区别

保存状态

cookie 是通过在客户端记录信息确定用户身份的,而 session 则通过在服务器端记录信息来确定用户身份。下面是网上找到的两张图,能够对 cookie 以及 session 在客户端与服务端传递的过程有个较清晰的认识:

使用方式

cookie机制:

  • 默认情况下,cookie 保存在内存中,浏览器关闭就没了;设置过期时间后,cookie 保存在硬盘上,关闭浏览器仍然存在,直到过期时间结束才消失。
  • cookie 以文本形式保存在客户端,每次请求时都带上它。

session机制:

  • 每次请求,服务器会检查是否有 sessionid
    • 有,服务器根据 id 返回对应 session 对象
    • 无,服务器创建新的 session 对象,并把 sessionid 在本次响应中返回给客户端。
  • 通常使用 cookie 方式存储 sessionid 到客户端
    • 用户禁用 cookie 时,则服务端可以使用URL重写,可以通过 response.encodeURL(url) 进行实现

存储方式

  • cookie 只能保存字符串类型,以文本的方式
  • session 能支持任何类型的对象

存储大小

  • cookie单个不超过4kb
  • session没限制