首页 > 代码库 > 对cookie的深入学习

对cookie的深入学习

1、什么是cookie

cookie是一段文本信息,是服务器给每一个客户端的一个标识

2、为什么需要cookie

因为http协议是无状态的协议,服务端不能记录客户端访问服务器的记录。比如说:csdn这个博客系统,博主可以通过url访问这个网页,其他人也可以通过这个url访问这个网页。服务器必须要区分这个两种不同的权限,因为其他人不能编辑博客,而博主可以编辑博客。url相同,只是根据url,服务器不能区分用户,这个时候就需要cookie了。因为cookie是用来标识身份的,它能保存当前会话的状态。

3、cookie有哪些属性?

属性 描述

  • String  name                      cookie的名字

  • Object  value                      cookie的值

  • int maxAge                          标识cookie的生命时长,有以下几种情况:如果maxAge为正数,表示cookie在maxAge秒之后就失效了,这个失效在客户端可以做;
                                                            如果maxAge是负数,表示这个cookie是一个临时的,只要浏览器关闭,客户端的这个cookie就会丢失;如果maxAge是0,表示是删除这个

           cookie,这个删除是服务器的指令。

  • Date expire                      作用是同maxAge的,是以当前时间为比较点的,注意时间是伦敦时间也就是GMT时间

  • boolean secure                  如果secure设置成true,那么就表示这个cookie只能是在安全协议下才能使用,非安全协议不会被访问。安全协议有https,ssl


下面是解析path和domain,在解释path和domain之前,我想先说一下url的构成。

举一个例子:http://blog.csdn.net/xie389124248

url由以下三个部分组成

第一个部分:模式/协议

http——超文本传输协议资源
https——用安全套接字层传送的超文本传输协议
ftp——文件传输协议
mailto——电子邮件地址
ldap——轻型目录访问协议搜索
file——当地电脑或网上分享的文件
news——Usenet新闻组
gopher——Gopher协议
telnet——Telnet协议

第二个部分:域名,也就主机的ip地址,这个域名是blog.csdn.net,有时候这个地方会指定一个端口,如果没有指定端口,就是默认端口。

第三部分:指定文件的路劲,xie389124248


  • String path          指的是cookie使用的路劲,在url里面,不同的url有不同的路径,在不同的路径下面,如果有相应的cookie的时候,就会对应着不同的cookie

        比如说:path设置为:/sessionWeb/    那么只有url里面这个路劲下才可以访问这个cookie,比如说:http://blog.csdn.net/sessionWeb这个url才可以访问

        这个cookie,而http://blog.csdn.net/或者是http://blog.csdn.net/aabbcc是不可以访问这个cookie的。如果把path设置为/,那么所有的http://blog.csdn.net/

        都可以访问这个cookie


  • String domian      明白的上面url的不同部分,就比较好明白这个domain了,它就是对应不同的域名。比如说:如果domain设置为.google.com,那在url的域名里面以

         .google.com结尾的都可以访问这个cookie ,比如说http://www.google.com或者是http://yyyyy.google.com都可以访问 ,如果把domain设置为.baidu.com

         那么这两个url都不能访问这个cookie


  • String comment     对这个cookie的说明


  • int  version           0表示是netspace的规范,1表示w3c的规范            


以上是cookie的属性,cookie的属性是非常重要的,创建cookie的时候,一定要设置好cookie的属性。 

4、在android如何读取和保存cookie?

android里面存取cookie有两种方式:

一种是java的方式:

主要是通过CookieStore来完成,打开连接,可以通过jdk文档来进一步了解

一种是apache方式:

主要是通过CookieStore来完成,这个是一个接口,我们要实现它,android也提供了默认的实现BasicCookieStore

通过DefaultClient的setCookieStore设置好就行了,它就会自动把服务端的cookie存入到BasicCookieStore里面,当需要请求的时候,也会带上这些cookie

BasicCookieStore只是实现了把cookie保存在内存,并没有把他持久化,要想持久化,就得自己实现CookieStore。注意做持久化的时候,同时也要把

cookie的属性也要存起来。