首页 > 代码库 > 对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秒之后就失效了,这个失效在客户端可以做;
cookie,这个删除是服务器的指令。
- Date expire 作用是同maxAge的,是以当前时间为比较点的,注意时间是伦敦时间也就是GMT时间
- boolean secure 如果secure设置成true,那么就表示这个cookie只能是在安全协议下才能使用,非安全协议不会被访问。安全协议有https,ssl
下面是解析path和domain,在解释path和domain之前,我想先说一下url的构成。
举一个例子:http://blog.csdn.net/xie389124248
url由以下三个部分组成
第一个部分:模式/协议
第二个部分:域名,也就主机的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的属性也要存起来。