【问题标题】:session cookie httponly false rails 3.1会话cookie httponly false rails 3.1
【发布时间】:2012-01-11 05:15:50
【问题描述】:

我正在尝试关闭 httponly 以在 phonegap 中使用。我正在使用 rails 3.1 并进行设计,每个都报告了(但没有记录)这样做的方法,但都不起作用:

# 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,然后重新加载了页面。 'Http' 列仍在 chrome 调试器中检查。

帮助!

【问题讨论】:

    标签: ruby-on-rails session cookies httponly


    【解决方案1】:

    据我所知,这是 Rails 中的一个错误。也许该选项已被删除,但文档仍然存在。欢迎对此提出任何想法!

    我在 ActionPack 上花了好几个小时,但找不到任何关于这种配置选项的参考资料——但我仍然不了解它的工作原理。具体来说,有一个 cookiestore 保存 cookie 并将它们写入标头(并传递:httponly => true),但我找不到会话如何使用存储 - 像 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
    

    【讨论】:

      【解决方案2】:

      这个小 sn-p 似乎可以工作:

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

      【讨论】:

        猜你喜欢
        • 2011-02-10
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        • 2017-02-04
        • 1970-01-01
        • 2012-04-07
        • 2011-12-29
        • 1970-01-01
        相关资源
        最近更新 更多