2010-04-21 120 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 
相关问题