2

在 Rails 3.2.8 中,你可以这样写一个 cookie

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

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

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

我也希望:max_age可以作为一个选项使用,但也许用户代理支持还不够广泛(?)以保证包括它。

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

4

1 回答 1

2

我阅读了ActionDispatch::Cookies 的 Rails 源代码。如果您查看handle_options方法的使用方式,您会发现文档中未指定的选项也被传递。Rails 通常会非常自由地传递选项,其理念是,在某个地方,一个方法会知道如何处理剩余的选项。

因此,我建议您尝试使用该:max_age选项,即使它没有记录在案,看看会发生什么。

注意:Rails 依赖Rack 来设置 cookie 标头,所以如果由于某种原因“Max-Age”“Set-Cookie”标头传递给 Rack 但没有被传递,我会询问 Github Rack 问题跟踪器。

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

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

于 2012-09-05T01:39:38.800 回答