2008-09-16 133 views

回答

29

在用于设置cookie的散列中设置'http_only'选项。

cookies["user_name"] = { :value => "david", :httponly => true }

,或者在轨道2:

例如

cookies["user_name"] = { :value => "david", :http_only => true }

+7

Heads up - in rails 3`:http_only`选项重命名为`:httponly` – WTK 2012-01-25 09:06:56

6

只需按照changelog中所述将http_only设置为true即可。

1

我还写了一个包含在Rails 2.2中的补丁,该补丁默认CookieStore会话为http_only。

不幸的是,会话cookie仍然是默认的常规cookie。

11

再劳里的回答是:

注意,选项从:http_only:httponly(无下划线)在某一时刻重新命名。

在actionpack 3.0.0,也就是Ruby on Rails 3中,所有对:http_only的引用都没有了。

这让我有一段时间。

2

如果你有一个名为config/session_store.rb的文件,包括这一行(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" 

而且Rails允许你设置以下键:

:到期 - 在此cookie过期,作为一个Time对象的时间。

:secure - 此cookie是否仅传输到HTTPS服务器。默认为false。