什么是Cookie?

来源:互联网 发布:淘宝消保工具是什么 编辑:程序博客网 时间:2024/06/07 01:20

 

什么是Cookie?

今天老师上课讲的是关于Cookie的相关介绍:

1.Cookie是一种在客户端保持HTTP状态信息的技术,它好比商场发放的优惠卡。 

2.Cookie是在浏览器访问WEB服务器的某个资源时,由WEB服务器在HTTP响应消息头中附带传送给浏览器的一片数据,WEB服务器传送给各个客户端浏览器的数据是可以各不相同的。 

3.一旦WEB浏览器保存了某个Cookie,那么它在以后每次访问该WEB服务器时,都应在HTTP请求头中将这个Cookie回传给WEB服务器。

4.WEB服务器通过在HTTP响应消息中增加Set-Cookie响应头字段将Cookie信息发送给浏览器,浏览器则通过在HTTP请求消息中增加Cookie请求头字段将Cookie回传给WEB服务器。

一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)。 

5.一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点提供的Cookie。

浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。  

Cookie的请求头字段: 

浏览器使用Cookie请求头字段将Cookie信息回送给WEB服务器。 

多个Cookie信息通过一个Cookie请求头字段回送给WEB服务器。  

浏览器根据下面的几个规则决定是否发送某个Cookie信息: 

请求的主机名是否与某个存储的Cookie的Domain属性匹配; 

请求的端口号是否在该Cookie的Port属性列表中; 

请求的资源路径是否在该Cookie的Path属性指定的目录及子目录中; 

该Cookie的有效期是否已过。

Cookie请求头字段中的每个Cookie之间用逗号(,)或分号(;)分隔。

在Cookie请求头字段中除了必须有“名称=值”的设置外,还可以有Version、Path、Domain、Port等几个属性。

在Version、Path、Domain、Port等属性名之前,都要增加一个“$”字符作为前缀。

Version属性只能出现一次,且要位于Cookie请求头字段设置值的最前面,如果需要设置某个Cookie信息的 Path、Domain、Port等属性,它们必须位于该Cookie信息的“名称=值”设置之后。

Cookie的综合实例———>

Cookie ckName = new Cookie("name",name);

Cookie ckNickname = new Cookie("nickname",nickname);

ckNickname.setMaxAge(365*24*3600);

Cookie ckEmail = new Cookie("email","test1@it315.org");

Cookie ckPhone = 

new Cookie("phone","1111111");

response.addCookie(ckName);

response.addCookie(ckNickname);

response.addCookie(ckEmail);

response.addCookie(ckPhone)

String lastNickname = null;

Cookie [] cks = request.getCookies();

for(int i=0; cks!=null && i<cks.length; i++)

{

if("nickname".equals(cks[i].getName()))

 {

lastNickname = cks[i].getValue();

break;

if(lastNickname != null)

{

out.println("欢迎您," + lastNickname );

}