在Rails中,我如何设置cookie的Max-Age?

时间:2012-09-04 20:54:10

标签: ruby-on-rails http cookies

在Rails 3.2.8中,您可以write a cookie这样:

cookies[:login] = {
  :value   => "XJ-122",
  :expires => 1.hour.from_now
}

文档说这些是可用的选项符号:

:value
:path
:domain
:expires
:secure
:httponly

我希望:max_age也可以作为选项使用,但也许user agent support is not widespread enough yet (?)可以保证包括它。

那么我应该如何在Rails中设置cookie Max-Age

1 个答案:

答案 0 :(得分:2)

我读过the Rails source code for ActionDispatch::Cookies。如果查看how the handle_options method is used,您会看到文档中未指定的选项都会通过。 Rails通常会非常自由地传递选项,其理念是,在某个地方,一个方法将知道如何处理剩余选项。

所以,我建议您尝试使用:max_age选项,即使没有记录,看看会发生什么。

注意:Rails依赖于Rack to set the cookie header,因此如果由于某种原因将“Max-Age”“Set-Cookie”标题 传递给Rack但不< / strong>通过,我会问Github Rack问题跟踪器。

更新#1:至少有一个拉取请求与Max-Age和Rack有关,但我不确定它是否相关。如果上述方法不起作用,我想您可能想在上面提到的Rack票据跟踪器上进行讨论。

更新#2:你看过Rack::Cache中间件了吗?它可能有用。