Cookie跟Session的本质区别

775 阅读2分钟

HTTP 是一种”无状态“的协议

  • 客户端访问页面时,客户端都会打开于web服务器的单独连接
  • 并且服务器不会自动保留之前客户端请求的任何信息
  • 所以服务器不能识别多个请求是否来自相同的客户端(浏览器)

但是在很多业务,都有以下需求

  • 服务器能够识别多个请求是否来自相同的客户端
  • 相同的客户端共享数据

可以用以下技术完成

  • Cookie
  • Session

Cookie是什么?

  • Cookie是直接存储在浏览器的一小串数据
  • 使用document.cookie 访问浏览器的Cookie
  • 修改Cookie时,只会修改其中提到key的cookie
  • 单个cookie 最大是4kb,最多有20+个cookie(取决于浏览器)
  • 假如没有设置Cookie的过期时间,则当浏览器关闭时,cookie失效
  • 假如设置了Cookie的过期时间,在有效期之内,即使关闭了浏览器,Cookie也不会失效

怎么增加Cookie

  • 浏览器:RequestHeader
  • 服务器可以用ResponderHeader,通知浏览器写入Cookie

Session是什么?

Session是存储在服务器的,默认有效期三十分钟

总结:Cookie跟Session的区别

Cookie

  • 数据存储在浏览器客户端
  • 数据有大小跟数量的限制
  • 适合存储一些小型的,不敏感的数据
  • 默认,关闭浏览器就会失效

Session

  • 数据存储在服务器
  • 数据没有大小的限制
  • 可以存储一些大型数据
  • 默认,三十分钟 未使用,就会失效

说到这里,但是还是很模糊

继续总结

Cookie,Session的本质

  • 客户端首次访问服务器,肯定是不带Cookie的,
  • 服务器收到请求之后,看到这条请求没Cookie,就会生成Ssssion,并且还给Session 生成个JESSIONID,比如是”2333333333“,
  • 随后通过ResponderHeader,通知浏览器,写入JESSIONID = ”2333333333“
  • 下次请求,浏览器请求就会带着JESSIONID = ”2333333333“ 的Cookie,走到服务器,服务器看到这个Cookie是有JESSIONID,就会根据JESSIONID找到原来的Session
  • 至此,服务器知道了是相同的客户端

说到这里,可以得分啦