cookie的格式
cookie是一段文本,里面只能包含ascii字符,不能含有逗號和號,也就是說只能包含那128個字符的一些字符,不可能包含例如:‘中國’ 這種漢字
cookie在http請求和響應中的形式
在請求header中是:cookie 首部
在響應中是set-cookie首部
cookie的語法規則
1、數據部分是名值對,k=v
2、控制部分:過期日期、域、路徑、端口、版本、安全選項。各個部分用分號分開,不區分大小寫
過期日期:max-age:10(秒為單位) 或者 expires=wed,21-dec-2015 11:11:11 gmt,max-age表示最大存活多長時間,過了這個時間瀏覽器會吧這個cookie刪掉,expires超時時間,到了這個時間點會被刪掉,max-age是個相對的時間,expires是個絕對的時間點,當這兩個同時設置的時候max-age會覆蓋expires設置
域: 設置這個cookie在哪個域可以訪問到。在默認情況下,如果訪問的頁面是在 http://web0.com/a/test.jsp
那么這個cookie 就被設在了域web0.com下的/a路徑下面,只有訪問這個路徑下的其他頁面才會把cookie同時帶到服務器。但是可以改變這個默認的設置,可以設置為其他的路徑,這樣在其他路徑下的頁面也可以訪問到這個cookie,一般相同域名下,子域子路徑可以讀到父域父路徑下設置的cookie。不能將cookie設置到其他域名中,比如你不能設置一個cookie到 baidu.com 下,這不會有任何效果。
安全選項,secure 指的是這個cookie要不要再https安全連接下傳輸,默認是false,不需要,如果設為了true,這個cookie必須是在https下才會傳輸到服務端,否則不會傳輸。
cookie在java中的表示
- CookieHandler 就相當于瀏覽器中的cookie管理,他可以接受存儲cookie,cookie超時了會刪掉,但是CookieHandler 只提供了一些api,并沒有具體的cookie管理實現,CookieManager是真正的cookie管理實現類
CookieHandler.setDefault(new CookieManager()) ,可以安裝一個默認的cookie管理器。 - CookieStore 在正常情況下,瀏覽器中的cookie都是由服務器設的,但是我們可以在瀏覽器中用js的方法手動的來對cookie進行CRUD,所以java也提供了類似的管理接口,就是CookieStore,我們可以通過cookiestore來管理cookie,比如在java程序啟動的時候手動的設置一些cookie進去,可以將cookie持久化到本地,然后在下次啟動程序的時候重新載入到cookiemanager。