2016-12-02 73 views
2

我使用的是基於Cookie的會話存儲的Rails 4,發現Rails 4每次刷新頁面時都會給我一個不同的cookie,但它仍可以識別我。爲什麼Rails爲同一會話的每個請求更改Set-Cookie頭

將它與使用Rack::Session::Cookie的另一個機架應用程序相比較,它將只發送Set-Cookie作爲第一個請求,直到對會話數據進行一些更改。

他們爲什麼設計不同?背後有什麼理由嗎?

回答

0

這是因爲這樣的Rails處理會話存儲和Cookie加密:

  1. 默認的會話存儲將嘗試會話數據寫入到已經訪問會話的任何請求加密的Cookie(或者讀取從它或寫入),
  2. 加密值即使變化的時候,純文本價值也沒有,
  3. 加密恰好達到這是負責檢查,如果cookie的值發生了變化,以避免冗餘代碼之前Set-Cookie頭。

我進入更詳細的回答這個問題:Why is rails constantly sending back a Set-Cookie header?

相關問題