以前老是對session和cookie這兩個概念很模糊,今天就研究下他們的原理和關係前端
在說session和cookie以前,咱們先來講說session和cookie出現的緣由算法
衆所周知,http是無狀態的,也就是說在客戶端和服務器鏈接期間,客戶端向服務器發送的請求是不帶用戶信息的,因此咱們是沒法辨別出這個請求是哪一個用戶發出的。數據庫
爲了解決這個問題,就得藉助其餘技術,cookie和session就由此誕生服務器
首先須要闡明的一點:session是一種網絡通信的會話機制,而cookie只是實現這種機制的主流方案中的一個,cookie通常是用來保存sessionID的cookie
Cookie是存儲在客戶端的一段數據,一般記錄一些網站的密碼和用戶名等,當客戶端發送請求的時候,服務端須要記住這個用戶的信息,就在返回給前端的數據中設置Cookie,客戶端接受到這個請求後,會把Cookie保存起來,當再次訪問服務器的時候將會帶上這個Cookie,服務器經過這個Cookie來獲取用戶狀態網絡
基本過程:session
Cookie有不少的參數,能夠根據這些參數設置Cookie的過時時間和是否能被js更改等post
若是客戶端禁用了Cookie,一般客戶端會採用url重寫技術,好比會在url後面加上一個諸如sid=xx的參數網站
session是保存在服務端的,當用戶登陸系統後,服務端會根據一個算法,生成一個sessionID,這個sessionID惟一標識一個會話,服務端將這個sessionID存儲在內存中,數據庫或者文件當中,並設定必定的有效期,並將sessionID寫入到Cookie當中返回給客戶端,當下一次客戶端請求的時候會帶上sessionID,服務端會將客戶端中的Cookie與服務端中記錄的進行比較,從而肯定一個會話url
基本過程:
參考連接: