1. 程式人生 > >cookie和session,介紹及區別

cookie和session,介紹及區別

一,什麼是會話跟蹤?為什麼要進行會話跟蹤?

cookie和session,都是會話跟蹤技術。那麼什麼是會話?為什麼要跟蹤?十萬個為什麼ing

會話,指一個終端使用者與系統進行通訊的過程。比如,A和B訪問淘寶,分別分別用自己的賬號和淘寶互動,就有兩個不同的會話。

為什麼進行會話跟蹤呢?

訪問淘寶這個行為,是根據http協議,來互動的。可是http,是一種無狀態協議。一旦資料交換完畢,客戶端與伺服器端的連線就會關閉。再次通訊需要建立新的連線。

將http協議和會話聯絡起來,一個形象的例子是:A和B訪問淘寶,分別有一個會話,A將一件商品放入購物車,B沒有進行任何操作。

現在,有一個會話中記錄了操作,將商品放入購物車,另一個會話中沒有記錄任何東西。目測有點完美~~~

但是當A和B下次訪問淘寶時,兩個人看到的購物車都是空的。

這是因為,雖然會話中記錄的資訊不同,但是,並沒有標識,哪一個會話是A的,哪一個會話是B的。

所以,會話跟蹤,顧名思義,就是跟蹤一下,哪個會話是由哪個終端使用者產生的。

二,cookie

cookie可以看成是一種http拓展。

有兩個http頭部專門用於設定及傳送cookie。分別是Set-Cookie以及Cookie。

當客戶端訪問某個伺服器,伺服器返回一個http響應,響應中如果包含set-cookie,則指示客戶端建立一個cookie,並且後續的http請求中,自動傳送cookie到伺服器端,直到cookie過期。

如果cookie生存週期是整個會話期間的話,會將cookie儲存到記憶體中,關閉瀏覽器時清除。

如果cookie被儲存到客戶端硬碟中,關閉瀏覽器不會被清除,再次訪問時,自動傳送到伺服器端。

上述過程也可以用下圖來表示:

到現在,cookie跟蹤會話過程應該清楚了,可也許還有同學要問:cookie怎麼分清這是我和淘寶的會話,還是我和B站的會話?

cookie有個性質,叫不可跨域名性,域名不同,cookie是不能直接拿去用的。兄dei,放寬心~~  

 

三,session

客戶端訪問伺服器的時候,將客戶端資訊以某種形式儲存到伺服器上,這就是session。

session是依賴於cookie的,因為資訊被儲存在伺服器上,不同使用者訪問時,需要拿一個叫session_id的號碼牌,去找自己的session資訊,然後才能知道購物車裡放了哪些東西。這個session_id,就是在建立session的時候,伺服器返回給客戶端的名為JSESSIONID的Cookie。

四,cookie和session的不同點及應用場景

不同點:cookie儲存在客戶端,session儲存在伺服器。

應用場景:cookie儲存在客戶端,不會增加伺服器壓力,訪問量多,需要考慮伺服器效能的情況下,建議使用cookie

                  session儲存在伺服器端,更安全,不用考慮cookie欺騙和分析本地cookie引發的安全問題,安全需求適合用session。