3

我在这里读到: 获取 cookie 过期时间

只有名称和值被发送到服务器,因此没有其他 cookie 数据可用。

那意味着没有办法获取cookie的过期日期?所以我必须将该日期保存在我的数据库中,如果我以后需要它?

4

2 回答 2

9

没错,只返回cookie-namecookie-value

这不是 Rails 或 PHP 的缺点,它在RFC 6265中是这样定义的:

请注意,不会返回 cookie 属性。特别是,服务器无法仅根据 Cookie 标头确定 cookie 何时过期、cookie 对哪些主机有效、cookie 对哪些路径有效,或者 cookie 是否设置了 Secure 或 HttpOnly 属性。

于 2012-07-23T09:19:48.250 回答
0

虽然公认的答案是正确的,但我来到这里是因为我想确保我的应用程序设置一个永久cookie(过期日期在很远的将来),而不是一个普通的。

如果您想验证是否是这种情况(并且您不关心确切的到期日期),您可以设置这样的期望(示例使用Mocha gem):

ActionDispatch::Cookies::PermanentCookieJar.any_instance.expects(:[]=).with(:key, "value").once

这种期望将通过一次调用而通过,cookies.permanent[:key] = "value"但将失败 for cookies[:key] = "value"

它也适用于签名的 cookie ( cookies.permanent.signed[:key] = "value")。但是,请注意,签名的 cookie 将根据您的应用程序对其值进行加密secret_key_base,因此您必须将期望调整为类似

ActionDispatch::Cookies::PermanentCookieJar.any_instance.expects(:[]=).with(:key, anything).once

反而。

于 2015-10-20T08:51:11.620 回答