Session 簡介
理解Session可以從其名稱入手,翻譯成漢語具有"會話"的意思。
所謂的會話是一段有始有終的互動操作,比如通過手機與朋友進行語音通話。
特別說明:Session與sessionStorage並無聯絡,只因名稱有所關聯所以做一下介紹。
一.HTTP(s)無狀態協議:
所謂無狀態,是指兩次請求之間是絕對獨立的,毫無關聯。
雖然無狀態協議簡單高效,但是也隨之帶來了其他困擾。
比如在A頁面使用者登入軸,再去訪問B頁面,但是由於兩者毫無關聯,B頁面顯示未登入狀態。
事實是,絕大多數線上網站都能夠很好的維持會話狀態,A頁面登入,B頁面同樣能夠保持登入狀態。
二.Session的誕生:
為了維持會話狀態,可以通過Cookie實現。
但Cookie內容位於客戶端,並處於可見狀態,安全性較低。
所以出現位於伺服器端的Session來維持會話狀態。
三.Session功能概述:
文章起始位置已經介紹,Session翻譯成漢語具有"會話"的意思。
不同語境下,含義也有所不同,WEB中,Session通常指伺服器端維護會話狀態的物件。
Session物件在伺服器端建立,可以儲存於檔案或者資料庫等位置,可以將使用者等相關資訊儲存於此物件中。
下面簡述一下此物件是如何運作的,不涉及具體語言:
(1).客戶端向伺服器發起HTTP(S)請求。
(2).伺服器端收到請求,並執行指定的程式碼建立一個Session物件。
(3).請求使用者可能成千上萬,要維護會話狀態,必須要進行身份識別。
(4).在Session物件建立的時候會生成一個session_id,用於唯一標識當前請求使用者的身份。
(5).通過伺服器響應將此session_id傳送到客戶端,並儲存於cookie中。
(6).當再次傳送HTTP(S)請求,session_id會隨同傳送到伺服器。
(7).然後根據此session_id進行身份識別,找到對應的Session物件,並獲取相關使用者資訊。
下面是HTTP請求頭部資訊簡單演示:
[HTML] 純文字檢視 複製程式碼HTTP/1.1 200 OK Content-type: text/html Set-Cookie: name=value Other-header: other-header-value
伺服器響應,通過Set-Cookie將session_id儲存到客戶端cookie中。
[HTML] 純文字檢視 複製程式碼GET /index.html HTTP/1.1 Cookie: name=value Other-header: other-header-value
客戶端再次發出請求時,在通過Cookie將session_id傳送到伺服器進行比對。
相關文章
- ASP.NET Session簡單介紹ASP.NETSession
- JWT簡介:從Session到Token的轉變JWTSession
- 巨杉核心筆記(一)| SequoiaDB 會話(session)簡介筆記會話Session
- 【入門】分散式Session一致性入門簡介分散式Session
- cookie與session原理簡要CookieSession
- 使用者/伺服器程式概念及v$session/V$PROCESS檢視簡介伺服器Session
- 簡介
- Jira使用簡介 HP ALM使用簡介
- 【Oracle】gv$px_session 檢視介紹OracleSession
- 簡聊 Session 與 Token 身份驗證Session
- BookKeeper 介紹(1)--簡介
- Amphenol簡介
- Vagrant簡介
- PySimpleGUI 簡介GUI
- Protobuf簡介
- MyBatis 簡介MyBatis
- jango簡介Go
- cookie 簡介Cookie
- Cookie簡介Cookie
- Virgilio 簡介
- Django簡介Django
- ElasticSearch簡介Elasticsearch
- Javascript 簡介JavaScript
- Electron簡介
- Dubbo 簡介
- JavaScript簡介JavaScript
- CSS 簡介CSS
- 反射簡介反射
- JanusGraph -- 簡介
- CSS簡介CSS
- Bootstrap 簡介boot
- pwa簡介
- Apache簡介Apache
- JAVA簡介Java
- JUC簡介
- sass簡介
- NATS簡介
- Mybatis簡介MyBatis