TsaiChihWei / learning-blog

1 stars 0 forks source link

[筆記] Cookie & Session #23

Open TsaiChihWei opened 3 years ago

TsaiChihWei commented 3 years ago

Cookie 是什麼?在 HTTP 這一層要怎麼設定 Cookie,瀏覽器又是怎麼把 Cookie 帶去 Server 的?

Cookie 是個儲存在瀏覽器的小型文字檔案,伺服器可以透過 Set-Cookie 這個 response header 來讓瀏覽器儲存相對應的 Cookie。而下次瀏覽器發送 Request 時,會把相對應的 Cookie 放在 Header 一起傳過去,Server 就可以拿到資料。

Session 是什麼?

Session 原本英文的意思是指一段時間,在網路的世界我覺得真正的意思是指 Stateful session 即有狀態的一段時間,因為 HTTP 協定是一個無狀態協定,每個 Request 都是獨立的、彼此沒有關聯,而透過建立 Session 就可以讓 Request 保留狀態,伺服器就能辨別不同的 Request 是否為同一個人所發出。

在 Cookie 還沒出現以前,一樣可以建立 Session,像是可以把狀態資訊用 Qurey String 的方式放在網址列上面或使用其他方法。但 Cookie 出現以後建立 Session 變成一件更容易的事,只要使用 Set-Cookie 與 Cookie 這兩個 header 就好了。

建立 Session 之後,所儲存的狀態就叫做 Session information,可以翻作 Session 資訊。若是選擇把這些資訊存在 Cookie 裡面,就叫做 Cookie-based session;還有另一種方法則是在 Cookie 裡面只存一個 SessionID,其他的 Session 資訊都存在 Server 端,靠著這個 ID 把兩者關聯起來。