session和cookie的区别

84 阅读1分钟

Cookie 是 浏览器端存储的小文本信息,用于在客户端和服务器之间保存状态。

特点:

  • 存在于浏览器端,每个请求可以自动携带cookie到服务器(除非跨域未携带cookie)
  • 存储量小(一般4kb左右)
  • 可以设置过期时间(如果不设置过期时间,cookie会在浏览器关闭后消失,这种cookie称为会话cookie,存放于内存;如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间)
  • 可以跨请求保持用户状态。
  • cookie保存sessionId,浏览器不直接存session内容

Session 是 服务器端保存的状态信息,用来记录用户的登录状态或其他临时数据。

特点:

  • 存储在服务器端,安全性高

  • 每个 session 通常对应一个唯一的 sessionId

  • session 通过 cookie 或 URL 参数让浏览器识别

工作流程:

  1. 用户第一次访问服务器

  2. 服务器创建一个 HttpSession 对象,生成 sessionId

  3. 服务器通过响应头 Set-Cookie: JSESSIONID=xxxx 发送给浏览器

  4. 浏览器保存 cookie,每次请求自动带上 JSESSIONID

  5. 服务器根据 sessionId 找到对应的 session,对应用户状态

Cookie + Session 结合 → 能让服务端知道“这个请求是谁发来的”,同时保持状态