Session和Cookie

  • 标签: HTTP PHP基础
  • 发表时间:2020年05月31日
  • 作者:hhao
  • 浏览次数:261

Cookie是什么?


Cookie的产生

由于HTTP协议是无状态的,服务器不知道用户上一次做了什么,阻碍了交互式Web应用程序的实现,所以为了解决HTTP无状态的问题,人们提出Cookie技术用来保存用户的状态。

存储Cookie

Cookie保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。 内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久Cookie。

Cookie的用途

  • 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
  • 个性化设置(如用户自定义设置、主题等)
  • 浏览器行为跟踪(如跟踪分析用户行为等)

Cookie的缺点

  • Cookie会被附加在每个HTTP请求中,所以无形中增加了流量。
  • 由于在HTTP请求中的Cookie是明文传递的,所以安全性成问题,除非用HTTPS。
  • Cookie的大小限制在4KB左右,对于复杂的存储需求来说是不够用的

Session是什么?


Seeeion的产生

Session是服务端用来保存用户状态的方法,Seesion是依赖Cookie使用的,Session在网络应用中,称为“会话控制”。 安全性上来讲,Session比Cookie安全性稍微高一些。

Seeeion工作原理

WechatIMG2.png 当客户端需要和服务端进行会话的时候,请求发送到服务端。服务端会先检查这个请求里是否包含了一个SeeeionId。如果已经包含,服务端可以根据此SeeeionId检索出Seeeion来使用。如果检索不出来(Seeeion已经失效被删除了)服务端会针对这个SeeeionId新建一个Seeeion。如果客户端请求不包括SeeeionId这个值,则为此客户端创建一个Seeeion并且生成一个与此Seeeion相关联的Seeeionid。写入Cookie.

Session和Cookie区别


  • Cookie数据存放在客户端,Session数据放在服务器上。
  • Cookie不是很安全,别人可以分析存放在本地的Cookie并进行- - Cookie欺骗考虑到安全应当使用Session。
  • Session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用Cookie。
  • 单个Cookie保存的数据长度不能超过4K,很多浏览器都限制一个网址最多保存20个Cookie。
评论