前陣子被問到了 cookie、session的區別,我居然回答不出來 😢
今天我們就來談談它們兩位吧!
Cookie 和 Session 都是在 web 開發中用來管理用戶身份和狀態的重要概念,但它們之間有一些關鍵的區別。
Cookie:Cookie 是存放在用戶端(瀏覽器)的小型文本文件,通常以鍵值對的形式存儲在用戶的電腦上。
Session:Session 數據存儲在伺服器端,通常存儲在伺服器的記憶體中或數據庫中。
Cookie:Cookie 中的數據存儲在用戶的計算機上,因此它們可以被用戶輕易查看和修改。通常,Cookie 中不應該存儲敏感訊息。
Session:Session 數據存儲在伺服器端,用戶無法直接訪問或修改,因此更安全。
Cookie:Cookie 的數據容量通常受到限制,一個 Cookie 的大小不能超過 4KB。
Session:Session 數據的容量通常可以更大,因為它們存儲在伺服器上。
Cookie:Cookie 可以設定過期時間,可以是會話性 Cookie(在瀏覽器關閉後失效)或持久性 Cookie(在特定時間內保持有效)。
Session:Session 數據通常在用戶關閉瀏覽器後失效,但伺服器也可以設置 Session 的過期時間。
Cookie:通常用於存儲少量用戶設置和識別信息,例如用戶名稱、語言選項等。也可用於實現狀態管理,如登錄狀態。
Session:Session 通常用於存儲用戶的會話數據,例如購物車內容、登錄狀態、用戶配置等。
我們只要在 controller 設置即可
cookie
# 在 controller 設置一個名為 'user_id' 的 Cookie
# 設定 一小時後過期
cookies[:user_id] = { value: 'dojo', expires: 1.hour.from_now }
# 讀取 Cookie
user_id = cookies[:user_id]
session
# 在 controller 設置一個名為 'user_id' 的 Session 變數
session[:user_id] = dojo
# 讀取 Session 變數
user_id = session[:user_id]
總之,Cookie 和 Session 都是管理用戶數據的重要機制,但它們的使用時機和存儲位置不同。