iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
Software Development

從餐飲業轉職成小白工程師的所見所學系列 第 19

cookie 跟 session 的差別? Day19

  • 分享至 

  • xImage
  •  

前陣子被問到了 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 通常用於存儲用戶的會話數據,例如購物車內容、登錄狀態、用戶配置等。

使用 Rails 設置 cookie、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 都是管理用戶數據的重要機制,但它們的使用時機和存儲位置不同。


上一篇
常見的索引類型與使用方式 Day18
下一篇
Ruby 裡 Symbol 與 String 的差別? Day 20
系列文
從餐飲業轉職成小白工程師的所見所學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言