Cookie和Session都是會話跟蹤方案,這兩者通常都是配合使用的,簡單說就是:Cookie是儲存在客戶端來確認使用者身份的,Session是根據在伺服器端標識來確定使用者身份的。
我們知道,訪問網站時用的協議是HTTP或者HTTPS,HTTP協議本身是無狀態的協議,HTTPS是在HTTP協議基礎上加了SSL層(HTTPS是有狀態元件的)。在HTTP協議通訊下,伺服器是無法確認使用者身份的!怎麼理解呢?比如你多次向伺服器發出請求,伺服器預設情況下是無法區分這幾個請求都是來自於你的。這樣就會出現很多問題,比如商城平臺,你添加了購物車,伺服器如何知道哪個使用者把哪件商品加進購物車了呢?
為了解決這個問題,我們就必須給客戶端頒發一個“通行證”,以後使用者的每次請求都把這個“通行證”給帶上,這樣伺服器就能確認使用者身份了。Cookie機制就是客戶端的“通行證”,但是伺服器商拿到客戶端的“通行證”之後,是不是就直接放行了呢?肯定不行,伺服器端必須要對使用者的“通行證”進行確認,判斷使用者是否合法,所以伺服器上就需要儲存一份使用者的“檔案”,如果客戶端通行證和伺服器上的使用者檔案能匹配上,就代表使用者是合法的,伺服器上的“檔案”其實就是Session。
上面的例子已經很詳細的介紹了Cookie和Session的技術背景,它們都是為了解決HTTP協議無狀態的一種技術方案,都是為了保持會話的。
所以Cookie和Session的應用場景就是:需要保持使用者狀態的地方,通俗說就是:使用者登入時需要使用Cookie和Session。
1、兩者區別是:
Cookie儲存在客戶端,適合儲存小容量資料、安全性低;
Session儲存在伺服器端,可以儲存大量資料,安全性高。
2、兩者聯絡是:
Session預設情況下是依懶Cookie的,Session中的SessionID是儲存在客戶端Cookie中的。所以當Cookie被禁用後,Session也就無法跟蹤使用者了。
但可以透過技術手段使得Cookie禁用後也能正常使用Session,比如將SessionID透過GET引數傳遞給伺服器端。
Cookie和Session都是會話跟蹤方案,這兩者通常都是配合使用的,簡單說就是:Cookie是儲存在客戶端來確認使用者身份的,Session是根據在伺服器端標識來確定使用者身份的。
什麼是會話?為什麼需要會話?Cookie和Session的技術背景我們知道,訪問網站時用的協議是HTTP或者HTTPS,HTTP協議本身是無狀態的協議,HTTPS是在HTTP協議基礎上加了SSL層(HTTPS是有狀態元件的)。在HTTP協議通訊下,伺服器是無法確認使用者身份的!怎麼理解呢?比如你多次向伺服器發出請求,伺服器預設情況下是無法區分這幾個請求都是來自於你的。這樣就會出現很多問題,比如商城平臺,你添加了購物車,伺服器如何知道哪個使用者把哪件商品加進購物車了呢?
為了解決這個問題,我們就必須給客戶端頒發一個“通行證”,以後使用者的每次請求都把這個“通行證”給帶上,這樣伺服器就能確認使用者身份了。Cookie機制就是客戶端的“通行證”,但是伺服器商拿到客戶端的“通行證”之後,是不是就直接放行了呢?肯定不行,伺服器端必須要對使用者的“通行證”進行確認,判斷使用者是否合法,所以伺服器上就需要儲存一份使用者的“檔案”,如果客戶端通行證和伺服器上的使用者檔案能匹配上,就代表使用者是合法的,伺服器上的“檔案”其實就是Session。
Cookie和Session的應用場景上面的例子已經很詳細的介紹了Cookie和Session的技術背景,它們都是為了解決HTTP協議無狀態的一種技術方案,都是為了保持會話的。
所以Cookie和Session的應用場景就是:需要保持使用者狀態的地方,通俗說就是:使用者登入時需要使用Cookie和Session。
Cookie和Session的區別與聯絡1、兩者區別是:
Cookie儲存在客戶端,適合儲存小容量資料、安全性低;
Session儲存在伺服器端,可以儲存大量資料,安全性高。
2、兩者聯絡是:
Session預設情況下是依懶Cookie的,Session中的SessionID是儲存在客戶端Cookie中的。所以當Cookie被禁用後,Session也就無法跟蹤使用者了。
但可以透過技術手段使得Cookie禁用後也能正常使用Session,比如將SessionID透過GET引數傳遞給伺服器端。