web服务中的cookies和session小结

来源:互联网 发布:adobe flash cs3 mac 编辑:程序博客网 时间:2024/05/02 02:12

一、Cookies

1.Cookie

  Cookie(复数形态Cookies),指某些网站为了辨别用户身份而储存在用户本地终端(ClientSide)上的数据。定义于RFC2109。是网景公司的前雇员卢·蒙特利在1993年3月的发明。Cookie会存储浏览信息,例如您的网站偏好设置或个人资料信息等等。

  Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的

 

2.Cookies的作用

        因为HTTP协议是无状态的,对于一个浏览器发出的多次请求,WEB服务器无法区分 是不是来源于同一个浏览器。所以,需要额外的数据用于维护会话。Cookie 正是这样的一段随HTTP请求一起被传递的额外数据。Cookie只是一段文本,所以它只能保存字符串。而且浏览器对它有大小限制以及 它会随着每次请求被发送到服务器,所以应该保证它不要太大。Cookie的内容也是明文保存的,有些浏览器提供界面修改,所以, 不适合保存重要的或者涉及隐私的内容。

 

3.Cookie信息的交互方式

        服务端通过HTTP的响应头[Set-Cookie]这种途径发送到客户端的。而客户端将Cookie放在请求头中,发送到服务端的。


4.Google Chrome清除和禁止浏览器Cookies

(1)清除Cookies

设置 --> 显示高级设置 -->  内容设置 --> 所有Cookie和网站数据

(2)禁止浏览器Cookies

设置 --> 显示高级设置 -->  内容设置


二、session机制

   session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。

   当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识称为session id,如果已包含一个sessionid则说明以前已经为此客户端创建过session,服务器就按照sessionid把这个session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含sessionid,则为此客户端创建一个session并且生成一个与此session相关联的session id,sessionid的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。 保存这个sessionid的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。一般这个cookie的名字都是类似于SEEESIONID,而。比如weblogic对于web应用程序生成的cookie,JSESSIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764,它的名字就是JSESSIONID。

   简单来说,WEB服务器会为每一个客户端创建一个session,web应用可以将一些信息保存到session中,然后WEB服务器生成一个session id传给客户端,然后客户端带着这个session id去请求WEB服务器,WEB服务器根据客户端的session id来找到对应的session对象,并获取其中的信息。


三、cookiesession机制的区别与联系

   举例来说,某家咖啡店有喝5杯咖啡免费赠一杯咖啡的优惠,这时就需要某种方式来纪录某位顾客的消费数量。下面的几种方案:

   (1)服务员很厉害,能记住每位顾客的消费数量,只要顾客一走进咖啡店,店员就知道该怎么对待了。这种做法就是协议本身支持状态。

   (2)发给顾客一张卡片,上面记录着消费的数量,一般还有个有效期限。每次消费时,如果顾客出示这张卡片,则此次消费就会与以前或以后的消费相联系起来。这种做法就是在客户端保持状态。

   (3)发给顾客一张会员卡,除了卡号之外什么信息也不纪录,每次消费时,如果顾客出示该卡片,则店员在店里的纪录本上找到这个卡号对应的纪录添加一些消费信息。这种做法就是在服务器端保持状态。

   将上面的例子映射到HTTP请求的状态信息上来,由于HTTP协议是无状态的,而出于种种考虑也不希望使之成为有状态的,因此,后面两种方案就成为现实的选择。具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上它还有其他选择。



学习资料参考于:

http://www.2cto.com/kf/201206/135471.html

0 0
原创粉丝点击