簡體   English   中英

會話cookie httponly false rails 3.1

[英]session cookie httponly false rails 3.1

我正試圖關閉httponly以用於phonegap。 我正在使用rails 3.1和devise,每個都報告了(但沒有記錄)這樣做的方法,其中沒有一個工作:

# 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中的一個錯誤。 也許該選項已被刪除,但文檔仍然存在。 歡迎提出任何想法!

我花了幾個小時與ActionPack,並沒有找到任何參考這樣的配置選項 - 但我仍然沒有全面了解它是如何工作的。 具體來說,有cookie存儲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

暫無
暫無

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

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