![](/img/trans.png)
[英]How do I set the session cookie's HttpOnly setting to false?
[英]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.