形象地理解Cookie和Session

Cookie和Session的形象理解

經過實際生活中的銀行卡來理解Cookie和Session間的關係:瀏覽器

  • Cookie至關於銀行卡
  • Session至關於銀行帳戶

結合到銀行存錢和取錢的過程來理解:服務器

存錢過程cookie

1. 興高采烈地到銀行櫃檯,把要存的錢交給銀行工做人員;
2. 銀行工做人員把錢存好後,給你一張銀行卡。

取錢過程session

1. 須要用錢了,找到最近的ATM機,插入銀行卡,輸入密碼;
2. ATM機驗證密碼正確後,就能夠取出錢啦!

類比存錢的過程,client(你)的請求到達server(銀行)後,server(銀行)新建了一個Session(銀行帳戶),並把Session(銀行帳戶)的ID(銀行卡號)放到Cookie(銀行卡)中返給了瀏覽器;網站

類比取錢的過程,client(你)再次發送請求時,瀏覽器會自動把Cookie(銀行卡)一塊兒發送給server(銀行或ATM機),server(銀行或ATM機)根據Cookie(銀行卡)中的ID(銀行卡號)找到Session(銀行帳戶),而後進行其它操做。code

咱們再來看在天貓網站購物的過程

1. 在瀏覽器中輸入天貓的網址,而後回車(什麼,不知道怎麼天貓的網址?我不會告訴你,我每次也是百度一下才知道的);
2. 天貓的服務器在接收到請求後,在返回給你網頁內容的同時,新建一個session,而後把session的ID放到cookie中返回;
3. 瀏覽器收到響應後,渲染網頁的頁面展現商品,同時發現有cookie,就保存一份cookie;
4. 選到本身喜歡的商品後,點擊加入購物車,瀏覽器就會將選擇的商品和cookie一塊兒發給天貓的服務器;
5. 天貓的服務器收到你加入購物車的請求後,拿到傳過來的cookie中的ID,到session中一查,原來你已經來過了,就直接在session中記錄你要購買的商品;
6. 選購完全部的商品後,你想看下本身買全沒有,就查看購物車;天貓服務器在接收到查看購物車請求後,根據cookie中的ID,在session中查詢到你加到購物車裏面的全部商品,返回給你。

爲何要使用Cookie和Session呢

由於HTTP請求是一種無狀態協議,就是說,Clinet和Server之間在完成一次請求後,二者之間就沒有關係了。當Client再次請求Server時,Server不會識別這個Client。通俗點說就是,Server把每一個HTTP請求都當作一次新的請求。若是Server想識別Client,就必須經過Cookie和Session配合來記錄數據,好比加入購物車。server

相關文章
相關標籤/搜索