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傳送到伺服器進行比對。
相關文章
- JWT簡介:從Session到Token的轉變JWTSession
- 巨杉核心筆記(一)| SequoiaDB 會話(session)簡介筆記會話Session
- 【入門】分散式Session一致性入門簡介分散式Session
- 簡聊 Session 與 Token 身份驗證Session
- 簡介
- Jira使用簡介 HP ALM使用簡介
- 基於 Session 實現簡訊登入Session
- BookKeeper 介紹(1)--簡介
- ggml 簡介
- PCIe簡介
- valgrind簡介
- SpringMVC簡介SpringMVC
- HTML 簡介HTML
- 核心簡介
- DPDK簡介
- Docker簡介Docker
- SpotBugs 簡介
- webservice簡介Web
- OME 簡介
- Spring 簡介Spring
- pytorch簡介PyTorch
- 【QCustomPlot】簡介
- DuckDB簡介
- SDL簡介
- swagger簡介Swagger
- MongoDb簡介MongoDB
- RabbitMQ簡介MQ
- JetCache 簡介
- JavaParser 簡介Java
- SSHJ 簡介
- Redpanda簡介
- Swoole 簡介
- jQuery 簡介jQuery
- SQLite簡介SQLite
- NGINX簡介Nginx
- Electron簡介
- cookie 簡介Cookie
- Selenium - 簡介