一、cookie策略
1.1 基本概念
浏览器持有的cookie分为两种:
(1)Session Cookie,又称为临时Cookie
(2)Third-party Cookie,又称为本地Cookie
1.2 两者的区别:【存放地址、过期时间】
(1)Third-party Cookie是服务器在Set-Cookie时指定了Expire时间的cookie,这种Cookie保存在本地硬盘,只有到了Expire时间后才失效,;
(2)Session Cookie 是服务器在Set-Cookie时没有指定Expire时间的cookie,这种Cookie保存在浏览器进程的内存空间,浏览器进程结束后,Session Cookie就失效了。(备注:在浏览器进程的生命周期内,即使浏览器新打开了Tab页,Session Cookie也都是有效地)
二、Cookie常用属性描述:
String name
该Cookie的名称。Cookie一旦创建,名称便不可更改
Object value
该Cookie的值。如果值为Unicode字符,需要为字符编码。如果值为二进制数据,则需要使用BASE64编码
int maxAge
该Cookie失效的时间,单位秒。如果为正数,则该Cookie在maxAge秒之后失效。如果为负数,该Cookie为临时Cookie,关闭浏览器即失效,浏览器也不会以任何形式保存该Cookie。如果为0,表示删除该Cookie。默认为–1
boolean secure
该Cookie是否仅被使用安全协议传输。安全协议。安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false
String path
该Cookie的使用路径。如果设置为“/sessionWeb”,则只有contextPath为“/sessionWeb”的程序可以访问该Cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/”
String domain
可以访问该Cookie的域名。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.”
另外需要注意的是:domain与端口无关。如172.18.0.42和172.18.0.42:8080对应的服务都能访问domain为“172.18.0.42”的cookie。
String comment
该Cookie的用处说明。浏览器显示Cookie信息的时候显示该说明
int version
该Cookie使用的版本号。0表示遵循Netscape的Cookie规范,1表示遵循W3C的RFC 2109规范
HttpOnly
设置该属性后,js将无法读取cookie中该记录。