session cookie httponly false rails 3.1



我试图关闭httponly在phonegap中使用。我正在使用rails 3.1和design,它们都报告了(但没有记录)这样做的方法,但没有一个工作:

# application.rb
config.session_options = { :httponly => false } # no effect
config.session = { :httponly => false } # undefined method `session='

# devise.rb
config.cookie_options = { :httponly => false } # also no effect
我重新启动了服务器,删除了现有的cookie,并重新加载了页面。在chrome调试器中,"Http"列仍然被选中。

帮助!

这个小片段似乎可以工作:

Testapp::Application.config.session_store :cookie_store, key: '_testapp_session', :domain => :all, :httponly => false

据我所知,这是rails中的一个bug。也许这个选项被删除了,但文档保留了下来。任何关于这个的想法将是受欢迎的!

我在ActionPack上花了几个小时,找不到任何关于这种配置选项的参考资料——但我仍然不知道它是如何工作的。具体来说,有保存cookie并将其写入头(并传递:httponly => true)的cookiestore,但我无法找到会话如何使用该存储-与模糊的东西,如Rails SessionManage模块是一个众所周知的鬼城。

我编写了一个中间件来完成这项工作:

# application.rb:
    config.middleware.insert_before ActionDispatch::Cookies, "UnshieldCookie" # remove httponly. 
# unshielded_cookie.rb
class UnshieldCookie
  def initialize(app)
    @app = app
  end
  def call(env)
    status, headers, body = @app.call(env)
    headers['Set-Cookie'].gsub!('HttpOnly', '') if headers['Set-Cookie'].present?
    [status, headers, body]
  end
end

最新更新