2009-09-24 346 views
3

如何阻止Rails始終發送會話頭(Set-Cookie)。如果應用程序還發送Cache-Control:公共標題,則這是一個安全問題。阻止Ruby on Rails發送會話頭

我的應用程序在某些/大多數操作中觸及(但不修改)會話哈希。這些頁面不顯示私人內容,因此我希望它們可以緩存 - 但Rails總是發送cookie標頭,無論發送的會話散列是否與前一個不同。

我想要實現的只是發送散列,如果它不同於從客戶端收到的散列。你怎麼能這樣做?也許這個修復也應該進入正式的Rails版本?你怎麼看?

回答

-1

這裏是至關重要行:

config.action_controller.session_store = :nil_session_store 

whole post

+0

嗯很好,但我確實需要一個會話存儲。我只是不希望Rails發送Set-Cookie響應頭,如果它與客戶端發送相應請求頭的哈希沒有區別。 – hurikhan77 2009-09-25 07:55:38

+0

-1問題是根本沒有會話存儲 – hurikhan77 2010-03-16 15:20:38

2

Rails僅將會話cookie數據添加到Set-Cookie標頭(如果已被觸摸)。您可能將事物設置爲已包含的值 - 它不夠智能,無法檢查數據是否實際不同。

編輯我的回答有點誤導。當您使用Cookie會話存儲時,如果cookie值(封送後)發生更改,則會設置新的Cookie。

actionpack/lib/action_controller/session/cookie_store.rb

+0

是的,我已經懷疑......在這個意義上的「接觸」是否也意味着從會話哈希讀取? +1支持我的懷疑 – hurikhan77 2010-03-16 15:18:48

+0

閱讀沒問題。在actionpack/lib/action_controller/session/cookie_store.rb中檢出CGI :: Session :: CookieStore#關閉 – casey 2010-03-17 02:15:17