Session与Cookie

本文深入解析了Session与Cookie的工作原理及应用场景,阐明了两者在数据存储位置、安全性及数据量方面的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Session

在服务器存储特定用户会话所需的属性及配置信息。
可以理解为用于在客户端与服务器之间,保持状态的解决方案。
对于客户端的请求,服务器先会检测有无Session信息,
如果有,就检索出对应ID的内存块,
如果没有,或者检索不出来(对应Session因超出时效等原因被删除了),服务器就会创建出新的一块内存块,并回传给客户端一个SessionID,以便客户端在下一次访问。
Session不会因为浏览器关闭而被删除,因为客户端并不会主动发出浏览器关闭的信息,服务器就压根不知道浏览器语句被关闭了。
为了解决这个问题,服务器一般会对每个Session设置时效,超过时效的,就会被服务器自动删除。
同时,为了安全性,一般服务器回传的Session并不会是一个可以容易找到规律的字符串。

一个例子

某超市给你发了一张积分会员卡,会员卡上面没有上面信息,只有一个卡号(可以理解为SessionID)。当你在超市购物的时候,通过你会员卡的卡号在超市里那么多张会员卡中找到你对于的信息(可以理解为通过SessionID检索对应内存块)。然后帮你记录你本次购物所获得的积分。
当然,你的会员身份是有效期的(可以理解为Session的时效),过期为兑换的积分也将被删除。

Cookie

存储在本地端的数据,是一个小型的文本文件。
Cookie有时效,有的是临时的,当关闭浏览器之后就失效,这一部分存储在内存里。
有的是长期的,比如说几天,几周,这一部分不会因为浏览器关闭而被删除,存储在硬盘里。
Cookie不能夸域名使用,一个一级域名下面的两个不同的二级域名也不能使用同一个Cookie。

又一个例子

某超市给你发了一张会员卡,这张卡上面是用来盖印花的。每次购物的时候,你需要将这张会员卡出示,收银员会根据你购物情况,在你的会员卡上盖相应数量的印花,然后这张卡你又可以拿回家了。

两者的区别与联系

  • 从上面两个例子就可以很明显的看出,最大的区别就是数据的存储位置不同
    Session的例子中,会员卡上面(客户端)的数据仅有卡号,而其他数据都在超市(服务器)上。
    Cookie的例子中,会员卡上面(客户端)的数据就是你积分是数据,而超市(服务器)并没有相关数据。
  • 安全性不同,由于Cookie数据是放在客户端,安全性比Session低。
  • 数据多少不同,Cookie一般是少量数据,一般文件大小不会超过4KB

不少情况下,SessionID的数据是用Cookie来存储的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值