Cookie和Session的区别

  1. 存储位置
    • Cookie:数据保存在客户端的浏览器上。当用户访问网站时,浏览器会将Cookie发送给服务器,以便服务器能够识别用户身份或获取用户之前的状态。
    • Session:数据保存在服务器端。服务器为每个用户会话创建一个唯一的Session ID,并通过Cookie或URL重写等方式将ID传递给客户端。客户端在后续的请求中携带这个ID,服务器根据ID检索对应的Session数据。
  2. 安全性
    • Cookie:由于数据保存在客户端,因此存在一定的安全风险。如果Cookie被截获或篡改,用户的隐私和安全性可能会受到威胁。此外,如果主要考虑到安全应当使用session。
    • Session:由于数据保存在服务器端,相对更加安全。服务器可以通过加密等手段保护Session数据,防止被恶意攻击者窃取或篡改。
  3. 有效期
    • Cookie:过期与否可以在Cookie生成的时候设置进去。用户可以在浏览器中设置Cookie的过期时间,或者通过浏览器的“清除浏览数据”功能删除Cookie。
    • Session:过期与否取决于服务期的设定。服务器可以设置Session的超时时间,当用户会话超过这个时间后,Session数据将被自动清除。
  4. 对服务器性能的影响
    • Cookie:对服务器性能的影响较小。因为数据保存在客户端,服务器不需要为每个用户保存额外的Session数据。
    • Session:当访问增多时,会比较占用服务器的性能。因为服务器需要为每个用户保存Session数据,并在每次请求时根据Session ID检索数据。
  5. 存储容量限制
    • Cookie:单个Cookie在客户端的限制是3K(即一个站点在客户端存放的Cookie不能超过3K)。因此,Cookie不适合存储大量的数据。
    • Session:没有明确的存储容量限制,但受到服务器性能和可用内存的限制。
  6. 应用场景
    • Cookie:主要用于记录用户的偏好设置、购物车信息、自动登录等需要保存在用户浏览器端的状态信息。
    • Session:主要用于记录用户的登录状态、访问信息、防止CSRF攻击等需要服务器端持久化保存的数据
  7. 有效期不同:
    • 会话期Cookie:基于内存保存,会话期Cookie是最简单的Cookie:浏览器关闭之后它会被自动删除,也就是说它仅在会话期内有效。

    •  持久性Cookie:基于硬盘保存,和关闭浏览器便失效的会话期Cookie不同,持久性Cookie可以指定一个特定的过期时间(Expires)或有效期(Max-Age)。
      cookie有会话cookie和持久cookie,生命周期为浏览器会话期的会话cookie保存在缓存,关闭浏览器窗口就消失

    • 持久cookie被保存在硬盘,直到超过设定的过期时间

    • 随着服务端session存储压力增大,会根据需要定期清理session数据

  8. 缺点:
    • cookie缺点:使用cookie来传递信息,随着cookie个数的增多和访问量的增加,它占用的网络带宽也越大。
    •  cookie并不安全,因为cookie是存放在客户端的,所以这些cookie可以被访问到,设置可以通过插件添加、修改cookie。所以从这个角度来说,我们要使用sesssion,session是将数据保存在服务端的,只是通过cookie传递一个sessionId而已,所以session更适合存储用户隐私和重要的数据。
    • Session缺点:不容易在多台服务器之间共享,可以使用session绑定,session复制,session共享解决。session存放在服务器中,所以session如果太多会非常消耗服务器的性能


       


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值