http協定是無狀态的,即服務端隻能通過你本次送出的http請求來給出響應。cookie可用于服務端标記用戶端。如登陸過後免輸密碼,購物車實作等。
cookie可以通過js代碼生成,也可以通過httpresponse頭部中的set-cookie屬性向浏覽器說明。
注意格式為
set-cookie: <name>=<value>[; <name>=<value>]...
[; expires=<date>][; domain=<domain_name>]
[; path=<some_path>][; secure][; httponly]
一個例子,chrome中的截圖見下。

圖1 響應封包頭中的設定cookie字段
一個cookie由name、value、domain等屬性組成,可以看下圖的列。
得到了cookie,下次通路的時候就會在http請求裡包含cookie,可以有很多個cookie。
本質仍是cookie。sessionid在服務端對應一個對象,可以存出各種資訊,一般放在記憶體中。
當用戶端第一次請求session對象時候,伺服器會為用戶端建立一個session,并将通過特殊算法算出一個session的id,用來辨別該session對象,當浏覽器下次(session繼續有效時)請求别的資源的時候,浏覽器會自動将sessionid放置到請求頭中,伺服器接收到請求後就得到該請求的sessionid,伺服器找到該id的session返還給請求者(servlet)使用。
微軟的sessionid
jsp的sessionid
cookie資料存放在客戶的浏覽器上,session資料放在伺服器上。