Cookie常用属性

来源:互联网 发布:ubuntu mysql使用 编辑:程序博客网 时间:2024/04/27 08:24

cookie的介绍

在chrome控制台中的application选项卡中可以看到cookie的信息。

Cookie是由服务器端生成,浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器。每个cookie除了name名称和value值这两个属性以外,常用属性还有:expires过期时间、 path路径、 domain域、以及 secure安全、HttpOnly属性。

name字段

name字段为一个cookie的名称。

value字段

name字段为一个cookie的值。

expires/Max-Age 字段

为此cookie超时时间。若设置其值为一个时间,那么当到达此时间后,此cookie失效。不设置的话默认值是Session,意思是cookie会和session一起失效。当浏览器关闭(不是浏览器标签页,而是整个浏览器) 后,此cookie失效。

1、过期时间,定cookie的生命期。
2、具体是值是过期日期。如果想让cookie的存在期限超过当前浏览器会话时间,就必须使用这个属性。当过了到期日期时,浏览器就可以删除cookie文件,没有任何影响。

注意:不设置的话默认值是Session,意思是cookie会和session一起失效**。当浏览器关闭(不是浏览器标签页,而是整个浏览器) 后,此cookie失效。(艺龙面试考察)

domain字段

1、域,指定关联的WEB服务器或域。
2、值是域名。这是对path路径属性的一个延伸。如果我们想让dev.mycompany.com 能够访问bbs.mycompany.com设置的cookies,该怎么办? 我们可以把domain属性设置成“mycompany.com”,并把path属性设置成“/”。不能把cookies**域属性设置成与设置它的服务器的所在域**不同的值。

以下为domain的详细设置规则:
domain字段为可以访问此cookie的域名。

非顶级域名,如二级域名或者三级域名,设置的cookie的domain只能为顶级域名或者二级域名或者三级域名本身,不能设置其他二级域名的cookie,否则cookie无法生成。

顶级域名只能设置domain为顶级域名,不能设置为二级域名或者三级域名,否则cookie无法生成。

二级域名能读取设置了domain为顶级域名或者自身的cookie,不能读取其他二级域名domain的cookie。所以要想cookie在多个二级域名中共享,需要设置domain为顶级域名,这样就可以在所有二级域名里面或者到这个cookie的值了。
顶级域名只能获取到domain设置为顶级域名的cookie,其他domain设置为二级域名的无法获取。

Http字段

cookie的httponly属性。若此属性为true,则只有在http请求头中会带有此cookie的信息,而不能通过document.cookie来访问此cookie。

1、如果在Cookie中设置了”HttpOnly”属性,那么通过后台程序读取,JS脚本将无法读取到Cookie信息,这样能有效的防止XSS攻击
2、但是设置HttpOnly属性,Cookie盗窃的威胁并没有彻底消除,因为cookie还是有可能传递的过程中监听捕获后信息泄漏。

Path字段

path字段为可以访问此cookie的页面路径。 比如domain是abc.com,path是/test,那么只有/test路径下的页面可以读取此cookie。

1、路径,指定与cookie关联的WEB页。
2、值可以是一个目录,或者是一个路径。如果/head/index.html 建立了一个cookie,那么在/head/目录里的所有页面,以及该目录下面任何子目录里的页面都可以访问这个cookie。这就是说,在/head/stories/articles 里的任何页面都可以访问/head/index.html建立的cookie。但是,如果/zdnn/ 需要访问/head/index.html设置的cookies,该怎么办?这时,我们要把cookies的path属性设置成“/”。在指定路径的时候,凡是来自同一服务器,URL里有相同路径的所有WEB页面都可以共享cookies。现在看另一个例子:如果想让 /head/filters/ 和/head/stories/共享cookies,就要把path设成“/head”。

Secure字段

设置是否只能通过https来传递此条cookie

1、安全,指定cookie的值通过网络如何在用户和WEB服务器之间传递。
2、这个属性的值或者是“secure”,或者为空。缺省情况下,该属性为空,也就是使用不安全的HTTP连接传递数据。如果一个 cookie 标记为secure,那么,它与WEB服务器之间就通过HTTPS或者其它安全协议传递数据。不过,设置了secure属性不代表其他人不能看到你机器本地保存的cookie。换句话说,把cookie设置为secure,只保证cookie与WEB服务器之间的数据传输过程加密,而保存在本地的cookie文件并不加密。如果想让本地cookie也加密,得自己加密数据。

参考:http://www.studyofnet.com/news/1053.html
http://www.cnblogs.com/keyi/p/6823853.html