定義:在連接之間存儲持久的客戶端狀態(tài)的小文本串
只能是非空白符的ASCII文本,不能包含逗號或分號
cookie在請求和響應(yīng)的HTTP首部,從服務(wù)器傳遞到客戶端,再從客戶端傳回到服務(wù)器
cookie值通常不包含數(shù)據(jù),只是指示服務(wù)器上的數(shù)據(jù)
cookie作用域
默認(rèn)作用域是最初的URL所指向的服務(wù)器和所有子域及所有子目錄
可通過多個(gè)屬性控制其作用域(過期日期,路徑,端口,版本,安全選項(xiàng))
Domain 可指示一個(gè)cookie應(yīng)用于整個(gè)子域,而不只是最初的服務(wù)器
如Set-cookie:user=elharo;Domain=foo.example.com
Path 路徑限制
如Set-cookie:user=elharo;path=/restricted
請求相同服務(wù)器子樹/restricted中的一個(gè)文檔時(shí),客戶端會回顯此cookie
cookie也可同時(shí)包括域和路徑
如Set-cookie:user=elharo;Domain=foo.example.com;path=/restricted
不同cookie屬性的順序無關(guān)緊要,只需用;隔開,但客戶端發(fā)送回服務(wù)器時(shí),路徑必須在域前面
expires 格式:Wdy,DD-Mon-YYYY HH:MM:SS GMT
設(shè)置cookie在這個(gè)時(shí)間點(diǎn)過期
Max-Age 可設(shè)置cookie經(jīng)過一定秒數(shù)過期
secure 無值的安全屬性
cookie可能包含敏感信息,如口令和會話密鑰,所以一些cookie應(yīng)當(dāng)是安全的
httponly 告訴瀏覽器只能通過HTTP和HTTPS返回cookie
特別強(qiáng)調(diào)不能由javascript返回,為針對cookie竊取提高安全性
CookieManager
java.net.CookieHandler ?定義了存儲和獲取cookie的API
CookieManager manager=new CookieManager();
cookieHandler.serDefault(manager);
即可實(shí)現(xiàn)從網(wǎng)站接收cookie,再把它們發(fā)回給這些網(wǎng)站,Java會存儲這些服務(wù)器發(fā)送的所有cookie
對于接收哪里發(fā)送的cookie:
CookiePolicy.ACCEPT_ALL ?接受所有cookie
CookiePolicy.ACCEPT_NONE 不接受任何cookie
CookiePolicy.ACCEPT_ORIGINAL_SERVER 只接受第一方cookie
需在保存cookie數(shù)據(jù)之前設(shè)置:(有待驗(yàn)證)
manager.setCookiePolicy(cookiePolicy.xxxx);
更細(xì)粒度控制可實(shí)現(xiàn)cookiePolicy接口,覆蓋shouldAccept()方法
CookieStore
有時(shí)需在本地存放和獲取cookie
CookieStore store=manager.getCookieStore();
允許增加、刪除和列出cookie
此庫中的cookie都封裝在一個(gè)HttpCookie對象中