HTTP_詳解Cookie與Session

HTTP 狀態管理: cookie與session

大家先來想想一個例子,如果我今天要開一間咖啡館,然後有一個滿10點送50元飲料,我該怎麼去紀錄?

  1. 集點蓋章
  2. 老闆自備簽名章

一般人可能會講上面那兩點,但事實上上面那兩個方法有點問題,我們無法知道雙方會部會造假,因此得出了第三個方法,你有自己的會員蓋章,老闆也準備自己的系統紀錄,假如要兌換,就核對一下即可頒發。cookie與session就是為了解決第三個辦法的蓋章卡以及老闆的系統。

是甚麼

一小段文本訊息,客戶端請求服務器,服務器就頒發一個cookie給客戶端瀏覽器(蓋章卡) , 客戶端瀏覽器就把它保留下來,假設下次再請求,瀏覽器會把cookie跟網址提交給服務器,讓服務器辨別用戶狀態。

流程圖

原理

如何獲取

可以在瀏覽器打網址的地方輸入下面這行javascript:alert(document.cookie)

Session

是甚麼

服務器端紀錄用戶訊息的機制(老闆的紀錄器)

原理

有效期

基本上cookie有效時間會非常非常久,而session因為視服務端,會有大量的session紀錄,可能會內存溢出,因此會有失效,又分成下面幾種

  1. 自動失效: session超時
  2. 主動失效: 調用HttpSession.invalidate( )
  3. 服務器進程被停止

兩者比較

  1. 存放位置不同 (一個存在服務器,一個存在客戶端)

  2. 安全性不同

    cookie可能會被其他程式窺視,因此cookie盡量不要放帳號密碼

  3. 有效期不同 (session會自動清理,cookie基本上不會消失因為通常沒有像session有內存溢出的問題)

以上為https://coding.imooc.com/class/395.html#Anchor 整理下來的筆記