Session工作原理和典型應用分析

瓦窯原始碼發表於2020-12-03

1、建立Session

當使用者訪問到一個伺服器,如果伺服器啟用Session,伺服器就要為該使用者建立一個SESSION,在建立這個SESSION的時候,伺服器首先檢查這個使用者發來的請求裡是否包含了一個SESSION ID,如果包含了一個SESSION ID則說明之前該使用者已經登陸過併為此使用者建立過SESSION,那伺服器就按照這個SESSION ID把這個SESSION在伺服器的記憶體中查詢出來,如果客戶端請求裡不包含有SESSION ID,則為該客戶端建立一個SESSION並生成一個與此SESSION相關的SESSION ID。這個SESSION ID是唯一的、不重複的、不容易找到規律的字串,這個SESSION ID將被在本次響應中返回到客戶端儲存,而儲存這個SESSION ID的正是COOKIE,這樣在互動過程中瀏覽器可以自動的按照規則把這個標識傳送給伺服器。

2、使用Session

我們知道在IE中,我們可以在工具的Internet選項中把Cookie禁止,那麼會不會出現把客戶端的Cookie禁止了,那麼SESSIONID就無法再用了呢?找了一些資料說明,可以有其他機制在COOKIE被禁止時仍然能夠把Session id傳遞迴伺服器。

經常被使用的一種技術叫做URL重寫,就是把Session id直接附加在URL路徑的後面一種是作為URL路徑的附加資訊,表現形式為:

https://www.qilucms.com /xxx;jSession=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764;

另一種是作為查詢字串附加在URL後面,表現形式為:

https://www.why114.com /xxx?jSession=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764

還有一種就是表單隱藏欄位。就是伺服器會自動修改表單,新增一個隱藏欄位,以便在表單提交時能夠把Session id傳遞迴伺服器。
在這裡插入圖片描述

Session作用

Session的根本作用就是在服務端儲存使用者和伺服器會話的一些資訊。典型的應用有:

1、判斷使用者是否登入。

2、購物車功能。

Session例項問題

現有系統A,B; 假設A系統是可以獨立執行的web系統,即可以和瀏覽器直接處理session, B系統是基於mobile的,需要呼叫A系統的功能介面,

在保持A不改變的情況下,即登陸驗證,session儲存都不變的情況下,B系統能處理前端使用者的請求。

這裡提供的方案是使用PHP實現

在使用者登陸成功後,將儲存的session的session-id返回給B系統,然後B系統每次請求其他介面都帶session_id。

A系統在session_start前加上session_id(session_id);

這樣B系統就能安全的呼叫A

相關文章