iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 28
0
自我挑戰組

轉職道上的萌芽人生 − 自學程式開發ing系列 第 28

Day 28- 191014學習筆記 初窺 Cookie & Session

  • 分享至 

  • xImage
  •  

提醒:由於看到這系列鐵人訂閱人數漸漸變多,標記一下這些內容是在「非常萌新時期」所寫,更多技術內容請參考我的 Github,歡迎跟我一起討論 ^ ^


接下來想在我的圖書館網站中,新增使用者權限的部分,今天往這個方向出發,最後發現需要先來了解一下 Cookie & Session,因此今天文章就先來初步認識一下這個部分。


  • 首先先知道 Cookie 是存放在 Client端。Session 是存放在 Sever端。
    (這也是我聽到的第一句話,不過看得比較多後,覺得應該不是這樣分的,但現在我認知中的主流實作方法,其結果會看起來像這句話。)
  • Request、Respond 中會包含 Cookie,傳送往返 Client-Sever,因此寫在 Cookie 中的內容是不安全的。
  • 最開始 Request 是不具有「狀態」的,也就是 Sever 是不會知道該 Request 是誰傳送過來的,因此每次 Request 都必須重新報上姓名。
  • 然而為了達到能夠使其在某一特定時間內保有「狀態」,有了 Session 的誕生,而用來實現他的方法有許多種,如:
    • 可將 Session 寫在 Cookie,並可透過將 Cookie 加密,以增安全。
    • 在 URL 上附上 Session id ,使其配對在 Sever 中特定的 Session。
    • 以 Cookie 儲存 Session id,來配對在 Sever 中特定的 Session,如下圖。


圖片來源

  • 當傳送 Request 時,Server 會檢查其中是否包含 Session id 。
  • 若沒有 Session id,則會建立一個新的 Seesion 並產生一個配對的 Session id。
  • 將 Session id 以 Set-Cookie 放在 Respond 中回傳給 Client。
  • Client 可以決定是否接受這個 Set-Cookie,接受後在 Cookie 中存著該 Session id。
  • 當下次要傳送 Request 給想同 Domain 的網站時,會同時攜帶該 Cookie。
  • 當 Server 接收到的 Request 包含 Session id,則會配對到其 Session。
  • 該 Session 紀錄著之前的資訊(例如是在哪位使用者登入的狀態下),使得 Request 變成是能保有狀態的。

上一篇
Day 27- 191013學習筆記 Git
下一篇
Day 29- 191015學習筆記 Express - Session
系列文
轉職道上的萌芽人生 − 自學程式開發ing30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言