簡體   English   中英

防止Ruby on Rails發送會話頭

[英]Prevent Ruby on Rails from sending the session header

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

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

我想要實現的是只發送哈希值,如果它與從客戶端收到的哈希值不同。 你怎么能這樣做? 也許這個修復也應該進入官方的Rails版本? 你怎么看?

如果已經觸摸,Rails僅將會話cookie數據添加到Set-Cookie標頭。 您可能正在設置它們已包含的值 - 它不夠智能,無法檢查數據是否確實不同。

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

請參閱actionpack/lib/action_controller/session/cookie_store.rb

對於Rails 3,然后使用它。

env['rack.session.options'][:skip] = true

或等同物

request.session_options[:skip] = true

你可以在這里找到它的文檔http://doc.rubyists.com/rack/Rack/Session/Abstract/ID.html

這是關鍵線:

config.action_controller.session_store = :nil_session_store

整篇文章

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM