防止Ruby on Rails发送会话头

时间:2009-09-24 19:51:55

标签: ruby-on-rails caching session

如何防止Rails始终发送会话标头(Set-Cookie)。如果应用程序还发送Cache-Control:public header。这是一个安全问题。

我的应用程序在某些/大多数操作中触及(但不修改)会话哈希。这些页面不显示私有内容,因此我希望它们可以缓存 - 但无论发送的会话哈希是否与之前的哈希不同,Rails总是发送cookie头。

我想要实现的是只发送哈希值,如果它与从客户端收到的哈希值不同。你怎么能这样做?也许这个修复也应该进入官方的Rails版本?你觉得怎么样?

3 个答案:

答案 0 :(得分:2)

如果触摸了Rails,Rails只会将会话cookie数据添加到Set-Cookie标头中。您可能正在设置它们已经包含的值 - 它不够智能,无法检查数据是否实际上不同。

修改我的回答有点误导。当您使用cookie会话存储时,如果cookie值(在Marshaling之后)发生更改,则会设置新cookie。

请参阅actionpack/lib/action_controller/session/cookie_store.rb

答案 1 :(得分:1)

对于Rails 3,然后使用它。

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

或等效的

request.session_options[:skip] = true

您可以在http://doc.rubyists.com/rack/Rack/Session/Abstract/ID.html

找到相关文档

答案 2 :(得分:-1)

以下是关键路线:

config.action_controller.session_store = :nil_session_store

请参阅whole post