定義:在連接之間存儲持久的客戶端狀態(tài)的小文本串
只能是非空白符的ASCII文本显晶,不能包含逗號或分號
cookie在請求和響應(yīng)的HTTP首部肿嘲,從服務(wù)器傳遞到客戶端滑燃,再從客戶端傳回到服務(wù)器
cookie值通常不包含數(shù)據(jù)往果,只是指示服務(wù)器上的數(shù)據(jù)
cookie作用域
默認(rèn)作用域是最初的URL所指向的服務(wù)器和所有子域及所有子目錄
可通過多個屬性控制其作用域(過期日期疆液,路徑,端口陕贮,版本堕油,安全選項(xiàng))
Domain 可指示一個cookie應(yīng)用于整個子域,而不只是最初的服務(wù)器
如Set-cookie:user=elharo;Domain=foo.example.com
Path 路徑限制
如Set-cookie:user=elharo;path=/restricted
請求相同服務(wù)器子樹/restricted中的一個文檔時肮之,客戶端會回顯此cookie
cookie也可同時包括域和路徑
如Set-cookie:user=elharo;Domain=foo.example.com;path=/restricted
不同cookie屬性的順序無關(guān)緊要掉缺,只需用;隔開戈擒,但客戶端發(fā)送回服務(wù)器時眶明,路徑必須在域前面
expires 格式:Wdy,DD-Mon-YYYY HH:MM:SS GMT
設(shè)置cookie在這個時間點(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
有時需在本地存放和獲取cookie
CookieStore store=manager.getCookieStore();
允許增加、刪除和列出cookie
此庫中的cookie都封裝在一個HttpCookie對象中