session & cookie (本质是啥、区别是啥)

参考资料:http:cooike和session

举个例子:

在学校旁边的一家面馆,有消费三碗免费一碗的活动。然而一次性消费三碗的可能性很小,需要用某种方式来记录顾客的消费状态,这时就有两种方案:(本人备注:多次消费就相当于多次http请求)

cookie方案: 发给顾客(本人备注:顾客就是客户端,也就是浏览器)一张卡(cooike),上面记录着消费量,一般还有个时限。每次消费的时候顾客只要出示这张卡,则此次消费的状态就被记录下来了。这就是在客户端保持状态。

session方案: 同样发给顾客一张卡(cooike),但是卡上只有一个卡号(session id),用来标识用户身份,其他什么都没有。每次顾客去消费时,只要出示这张卡,则店员就在店里(本人备注:面馆就相当于服务端)的记录本(session)上找到卡号所对应的记录,并且添加一些消费信息。这就是在服务器端保存状态的方法。

由于session方案需要session id(卡号)将客户端和服务器端连接起来,所以一般session机制需要借助cookie来在客户端保存session id。当然除了cookie还有一种url重写的方法也能够实现session机制。

要点总结:

1、cookie与session出现的原因是,http是无状态的,比如你用浏览器访问淘宝网登录了,按道理说,你就可以查看自己账号购物车里的宝贝列表了,但假设不用cookie与session等技术保存用户的信息,http是不知道你对淘宝网的多次请求是同一个人的。

2、cookie保存在客户端,也就是浏览器端。每次往服务器发请求,都会在请求头里带着cookie,缺点显而易见,浪费流量、降低效率。

3、session将用户信息保存在服务端,只需要往客户端的cookie中保存一个session id值就可以了。这样每次往服务器发请求,cookie的size很小,在服务端只需要根据cookie传过来的seesion id进行匹配session,从session中获取用户信息就可以了。

你可能感兴趣的:(session & cookie (本质是啥、区别是啥))