Cookie和Session的区别

半世苍凉 提交于 2020-03-24 18:18:11

由来

HTTP是无状态协议, 不能用状态来区分、管理请求和响应, 所以服务器单单从网络连接上无法知道客户的身份. 为了解决这个问题, 服务器给客户端分发一个通行证, 从客户端携带的通行证上确认客户的身份, 这就是Cookie的工作原理.

Cookie是客户端保存用户信息的一种机制, 用来记录用户的一些信息. Cookie是服务器在本地机器上存储的一段文本, 并随着每次请求发送到服务器.

根据响应报文中的Set-Cookie的首部字段信息, 通知客户端保存Cookie. 当客户端再向服务器端发起请求时, 客户端会自动在请求报文中添加Cookie值, 发送到服务器.

服务器发现客户端发送过来的Cookie后, 会检查是哪个客户端发过来的请求, 对应服务器上的记录, 得到之前的状态信息.

Session

服务器在执行Session机制时, 会生成Session的id值, 这个id值会发送给客户端, 并保存在客户端上, 保存的容器就是Cookie.

客户端每次请求都会把这个id值放到HTTP请求的头部发送给服务器. 当完全禁掉浏览器的Cookie时, 服务器的Session也不会正常使用.

Cookie和Session的比较

  • Cookie数据存放在客户端上, Session数据存放在服务器上.

  • 服务器的Session机制依赖于客户端的Cookie.

  • Cookie不是很安全, 通过分析存放在本地的Cookie并进行Cookie欺骗, 考虑到安全应该使用Session.

  • Session会在一定时间内保存在服务器上, 当访问增加时, 会占用服务器的性能, 考虑减轻服务器的性能时, 可以考虑用Cookie.

  • 单个Cookie保存的数据不能超过4K, 很多浏览器都限制一个站点最多保存20个Cookie.

  • 实际应用中, 可以考虑将登录信息等重要信息存放到Session中, 而其他信息如果需要保留可以存放在Cookie中.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!