关于cookie
1.关于cookie的domain属性的值有没有“.”的测试
firefox中在显示cookie时,firefox中在显示cookie时会显示.zyr.com,即自动在前面加了个点,而默认不设置时,会显示www.zyr.com, 而相应的在chrom中只显示zyr.com,前面没有点,默认不设置时,显示www.zyr.com。
重点是:前面有没有点,对firefox,chrome,ie来说,都是同等对待,即B应用始终能接收浏览器传过来的A应用设置的cookie.
但应注意的是在RFC2109(http://www.ietf.org/rfc/rfc2109.txt):HTTP State Management Mechanism 中一条如下,
4.3.2 Rejecting Cookies
“The value for the Domain attribute contains no embedded dots or does not start with a dot. ”,即cookie的domain的值,必须是以点开始的,不以点开始的cookie,应该拒绝丢弃。
我的理解是,firefox,chrome,ie在这一点上,没有遵从标准。
2.域名的层次关系对cookie的影响.
D应用的域名是d.d.d.zyr.com,
其中A应用添加了一个cookie,其domain属性设置为zyr.com,B应用添加了一个cookie,其domain属性设置为b.zyr.com,c应用添加了一个cookie,其domain属性设置为
c.c.zyr.com,
D应用添加了一个cookie, 其domain属性设置为d.d.d.zyr.com, 那么访问A应用时,A应用只能获取其自己写的Cookie,访问B应用时,其能获取A应用写的cookie和
其自己写的Cookie,访问C应用时,其能获取A,B应用写的cookie和 其自己写的Cookie,访问D应用时,其能获取A,B,C应用写的cookie和 其自己写的Cookie.
3.cookie不能跨域.
现有两个应用A,B, A域名www.zyr.com , B域名为www.abc.com, A域名添加的cookie,B应用获取不到,B域名添加的cookie,B应用获取不到.
即使A应用在添加cookie时,将cookie的域名属性设置为abc.com,虽然在浏览器如firefox中能看到cookie,其域名也为abc.com,,但在访问B应用时,B应用也
还是不能获取到这个Cookie .
在添加cookie时,如果不设置maxAge的值,则其默认值为-1,表示其为会话cookie,即当浏览器关闭时,cookie失效.删除cookie的方法为:添加一个同名cookie,将
maxAge属性值设置为0即可.有网友说maxAge在IE无效,但经测试,在IE也是有效的(只在IE8测试过)
在可以将httponly属性值设置为ture时,应尽量设置为true,这样相对来说,安全性更高,因为能防止在js中访问
应用在添加cookie时,如果只想让该cookie被安全url(即以https开头的url)获取,则应将secure属性设置为true
程序员最高境界:静若瘫痪,动若癫痫