2010-04-21 430 views
16

在Ruby on Rails中,如何將會話cookie的httpOnly設置設置爲false?如何將會話cookie的HttpOnly設置設置爲false?

+0

PSA:**不要在生產中這樣做**。 'httponly'標誌是爲了安全。這可能聽起來像是「不是https」,但它實際上意味着「JavaScript不可用」。 'httponly'與'secure'標誌兼容,這意味着「只通過https連接發送」。請參閱https://www.owasp.org/index.php/HttpOnly – 2017-05-10 19:06:47

回答

7

我想通了。在/config/environment.rb包括此代碼:

config.action_controller.session = { :httponly => false }

+0

這是什麼版本的rails?我想在軌道3,並得到以下錯誤:未定義的方法'會議='的ActionController :: Base:類 – 2011-12-02 04:12:54

+0

@Peter這是寫在版本2.3的RoR 3之前。它沒有與測試3. – kingjeffrey 2011-12-03 04:53:09

+0

我提出了一個解決方法,在這裏:http://stackoverflow.com/questions/8351871/session-cookie-httponly-false-rails-3-1/8371839#8371839 – 2011-12-04 19:44:16

6

這是我用做它的Rails 3:

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

在Rails 4,你需要編輯config/initializers/session_store.rb

Rails.application.config.session_store :cookie_store, 
    key: '_my_app_session', httponly: false 
+4

編輯它到什麼? – CoderDave 2014-05-04 22:27:24

+3

合理的問題CodeDave。您將密鑰':httponly'傳遞給值'false'。 (根據這裏的其他答案 - 只是要編輯的代碼的位置已從'environment.rb'更改爲初始化程序) – troelskn 2014-05-05 08:34:43

0

Rails有它默認設置爲true。 我不建議去改變它,因爲它會設置你的cookies accessable從JS改變,如:document.cookie

在Rails 3+你可以從config/initializers/session_store.rb改變你的餅乾配置:

# Be sure to restart your server when you modify this file. 
Rails.application.config.session_store :cookie_store, key: "_my_application_session", httponly: false