Cookie和Session的关系和区别

Cookie和Session的关系和区别

1.1 Cookie

       Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息。每次HTTP请求时,客户端都会发送相应的Cookie信息到服务端。它的过期时间可以任意设置,如果不主动清除,在很长一段时间里面都可以保留着,即便这之间把电脑关机了。

1.2 Session

       Session是在无状态的HTTP协议下,服务端记录用户状态时用于标识具体用户的机制。它是在服务端保存的用来跟踪用户的状态的数据结构,可以保存在文件、数据库或者内存中。在浏览器关闭后这次的Session就消失了,下次打开就不再拥有这个Session。其实并不是Session消失了,而是Session ID变了,服务器端可能还是存着上次的Session ID及其Session信息,只是它们是无主状态,也许一段时间后就会被删除。

       实际上Cookie与Session都是会话的一种方式。它们的典型使用场景比如“购物车”,当点击下单按钮时,服务端并不清楚具体用户的具体操作,为了标识并跟踪该用户,了解购物车中有几样物品,服务端通过为该用户创建Cookie/Session来获取这些信息。

1.3 Cookie与Session区别

       1. Cookie在客户端(浏览器),Session在服务器端。

       2. Cookie的安全性一般,他人可通过分析存放在本地的Cookie并进行Cookie欺骗。在安全性第一的前提下,选择Session更优。重要交互信息比如权限等就要放在Session中,一般的信息记录放Cookie就好了。

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

       4. Session可以放在文件、数据库或内存中,比如在使用Node时将Session保存在redis中。由于一定时间内它是保存在服务器上的,当访问增多时,会较大地占用服务器的性能。考虑到减轻服务器性能方面,应当适时使用Cookie。

       5.Session的运行依赖Session ID,而Session ID是存在Cookie中的,也就是说,如果浏览器禁用了Cookie,Session也会失效(但是可以通过其他方式实现,比如在URL中传递Session ID)。6. 用户验证这种场合一般会用Session。因此,维持一个会话的核心就是客户端的唯一标识,即Session ID。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值