cookie

定义:在连接之间存储持久的客户端状态的小文本串

只能是非空白符的ASCII文本,不能包含逗号或分号

cookie在请求和响应的HTTP首部,从服务器传递到客户端,再从客户端传回到服务器

cookie值通常不包含数据,只是指示服务器上的数据


cookie作用域

默认作用域是最初的URL所指向的服务器和所有子域及所有子目录

可通过多个属性控制其作用域(过期日期,路径,端口,版本,安全选项)

Domain 可指示一个cookie应用于整个子域,而不只是最初的服务器

如Set-cookie:user=elharo;Domain=foo.example.com

Path 路径限制

如Set-cookie:user=elharo;path=/restricted

请求相同服务器子树/restricted中的一个文档时,客户端会回显此cookie

cookie也可同时包括域和路径

如Set-cookie:user=elharo;Domain=foo.example.com;path=/restricted

不同cookie属性的顺序无关紧要,只需用;隔开,但客户端发送回服务器时,路径必须在域前面

expires 格式:Wdy,DD-Mon-YYYY HH:MM:SS GMT

设置cookie在这个时间点过期

Max-Age 可设置cookie经过一定秒数过期

secure 无值的安全属性

cookie可能包含敏感信息,如口令和会话密钥,所以一些cookie应当是安全的

httponly 告诉浏览器只能通过HTTP和HTTPS返回cookie

特别强调不能由javascript返回,为针对cookie窃取提高安全性


CookieManager

java.net.CookieHandler  定义了存储和获取cookie的API

CookieManager manager=new CookieManager();

cookieHandler.serDefault(manager);

即可实现从网站接收cookie,再把它们发回给这些网站,Java会存储这些服务器发送的所有cookie

对于接收哪里发送的cookie:

CookiePolicy.ACCEPT_ALL  接受所有cookie

CookiePolicy.ACCEPT_NONE 不接受任何cookie

CookiePolicy.ACCEPT_ORIGINAL_SERVER 只接受第一方cookie

需在保存cookie数据之前设置:(有待验证)

manager.setCookiePolicy(cookiePolicy.xxxx);

更细粒度控制可实现cookiePolicy接口覆盖shouldAccept()方法

CookieStore

有时需在本地存放和获取cookie

CookieStore store=manager.getCookieStore();

允许增加、删除和列出cookie

此库中的cookie都封装在一个HttpCookie对象中

你可能感兴趣的:(cookie)