如果瀏覽器Cookie禁用,如何標識用戶?

用戶68886090


我們先要清楚一點,我們訪問網站用的協議是HTTP協議,而HTTP協議本身就是無狀態的協議。什麼是無狀態呢?通俗說就是同一個訪客向同一站點發出了多個請求,站點服務器默認情況下無法判斷這些請求是出自同一個訪客的。那就會帶來一些問題了,比如用戶登錄,服務器如何知道用戶是否登錄了呢?所以必須要對會話進行管理,要保證服務器能辨別用戶。

在Web中,用戶的標識與狀態管理我們稱之為“會話管理”,會話管理是保持用戶與服務器之間的互動過程。

在Web中的會話管理技術主要有兩種:

  • 客戶端會話:Cookie

  • 服務端會話:Session

Cookie是存儲在客戶端(瀏覽器)的,Session是存儲在服務器內存、文件、數據庫等中的,而Session默認是基於Cookie技術的。

Session之所以能正常使用是因為Session有一個全局唯一的標識符,通過這個標識符服務器才能找到對應的Session進行操作。這個標識符就是SessionID,當瀏覽器第一次請求服務器時,服務器生成了Session並將SessionID存儲在客戶端Cookie中,以後用戶發出請求時都會把這個Cookie附加到請求頭信息中一起傳遞給服務器,服務器獲取到了這個SessionID就能找到對應的Session了。

所以說,如果瀏覽器禁用了Cookie,那此時SessionID就無法種植與傳遞,會導致用戶每發出一個請求都被當成是新用戶。這種情況下服務器端該如何標識用戶呢?

其實很簡單,服務器端只要將SessionID通過其它技術傳遞到客戶端,客戶端後續請求時繼續把SessionID作為請求參數傳遞給服務器端解析即可。

舉例說明一下,假設客戶端禁用了Cookie,此時執行登錄操作,登錄成功後服務器端只需要在重定向的URL後面附加一個GET參數(參數值就是SessionID),然後所有的站內鏈接都把這個GET參數帶上,這樣服務器通過獲取GET參數就能得到SessionID,自然也就找到了對應的Session,以此來實現用戶標識。

以上就是我的觀點,對於這個問題大家是怎麼看待的呢?歡迎在下方評論區交流 ~ 我是科技領域創作者,十年互聯網從業經驗,歡迎關注我瞭解更多科技知識!


分享到:


相關文章: