对Session和Cookie的理解笔记

来源:互联网 发布:手机位置定位软件 编辑:程序博客网 时间:2024/06/07 15:44
这两种机制都是 客户端与服务端保持状态的一种解决方案,具体一点也可以说是记录用户属性与状态的存储结构
 
      让我们用几个例子来描述一下cookie和session机制之间的区别与联系。笔者曾经常去的一家咖啡店有喝5杯咖啡
 免费赠一杯咖啡的优惠,然而一次性消费5杯咖啡的机会微乎其微,这时就需要某种方式来纪录某位顾客的消费数
 量。想象一下其实也无外乎下面的几种方案:
 1、该店的店员很厉害,能记住每位顾客的消费数量,只要顾客一走进咖啡店,店员就知道该怎么对待了。
 这种做法就是协议本身支持状态。
 2、发给顾客一张卡片,上面记录着消费的数量,一般还有个有效期限。每次消费时,如果顾客出示这张卡片,
 则此次消费就会与以前或以后的消费相联系起来。这种做法就是在客户端保持状态。
 3、发给顾客一张会员卡,除了卡号之外什么信息也不纪录,每次消费时,如果顾客出示该卡片,
 则店员在店里的纪录本上找到这个卡号对应的纪录添加一些消费信息。这种做法就是在服务器端保持状态。
 
      由于HTTP协议是无状态的,而出于种种考虑也不希望使之成为有状态的,因此,后面两种方案就成为现实的选择。
 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。
 同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要
 借助于cookie机制来达到保存标识的目的,但实际上它还有其他选择。
      cookie在http的响应头部,后台自动发给服务器,会话cookie存于内存,窗口关闭就没有了;存在硬盘上的cookie,
 关闭再打开浏览器仍有效。
      session服务器机制,服务器使用散列表来保存信息。客户端请求服务器——>服务器检查session id——>有session id,检索
 出session用;没有session id,生成session及关联session id,并将session id返回给客户端。
      URL重写,cookie被人为禁止,session id附加在url后面发送给服务器。
1 0
原创粉丝点击