cookie 是存儲于訪問者的計算機中的變量。Cookie是放在請求頭中,發(fā)送到服務(wù)端的。如果你一直刷新頁面,就能發(fā)現(xiàn), 每次HTTP請求,Cookie都會被發(fā)送。
Cookie是什么? Cookie 是一小段文本信息,伴隨著用戶請求和頁面在 Web 服務(wù)器和瀏覽器之間傳遞。Cookie 包含每次用戶訪問站點時 Web 應用程序都可以讀取的信息。
為什么需要Cookie? 因為HTTP協(xié)議是無狀態(tài)的,對于一個瀏覽器發(fā)出的多次請求,WEB服務(wù)器無法區(qū)分 是不是來源于同一個瀏覽器。所以,需要額外的數(shù)據(jù)用于維護會話。 Cookie 正是這樣的一段隨HTTP請求一起被傳遞的額外數(shù)據(jù)。
Cookie能做什么? Cookie只是一段文本,所以它只能保存字符串。而且瀏覽器對它有大小限制以及 它會隨著每次請求被發(fā)送到服務(wù)器,所以應該保證它不要太大。 Cookie的內(nèi)容也是明文保存的,有些瀏覽器提供界面修改,所以, 不適合保存重要的或者涉及隱私的內(nèi)容。
Cookie 的限制。 大多數(shù)瀏覽器支持最大為 4096 字節(jié)的 Cookie。由于這限制了 Cookie 的大小,最好用 Cookie 來存儲少量數(shù)據(jù),或者存儲用戶 ID 之類的標識符。用戶 ID 隨后便可用于標識用戶,以及從數(shù)據(jù)庫或其他數(shù)據(jù)源中讀取用戶信息。 瀏覽器還限制站點可以在用戶計算機上存儲的 Cookie 的數(shù)量。大多數(shù)瀏覽器只允許每個站點存儲 20 個 Cookie;如果試圖存儲更多 Cookie,則最舊的 Cookie 便會被丟棄。有些瀏覽器還會對它們將接受的來自所有站點的 Cookie 總數(shù)作出絕對限制,通常為 300 個。
通過前面的內(nèi)容,我們了解到Cookie是用于維持服務(wù)端會話狀態(tài)的,通常由服務(wù)端寫入,在后續(xù)請求中,供服務(wù)端讀取。 下面本文將按這個過程看看Cookie是如何從服務(wù)端寫入,最后如何傳到服務(wù)端以及如何讀取的。
=======================================
session
=======================================
HTTP協(xié)議是無狀態(tài)的,對于一個瀏覽器發(fā)出的多次請求,WEB服務(wù)器無法區(qū)分 是不是來源于同一個瀏覽器。 所以,為了實現(xiàn)會話,服務(wù)端需要一個會話標識ID能保存到瀏覽器,讓它在后續(xù)的請求時都帶上這個會話標識ID,以便讓服務(wù)端知道 某個請求屬于哪個會話,這樣便可以維護與會話相關(guān)的狀態(tài)數(shù)據(jù)。由于Cookie對于用戶來說,是個不可見的東西,而且每次請求都會傳遞到 服務(wù)端,所以它就是很理想的會話標識ID的保存容器。
除非你使用無Cookie的會話模式,否則Session是需要Cookie的支持。反過來,Cookie并不需要Session的支持。