我在这里读到: 获取 cookie 过期时间
只有名称和值被发送到服务器,因此没有其他 cookie 数据可用。
那意味着没有办法获取cookie的过期日期?所以我必须将该日期保存在我的数据库中,如果我以后需要它?
我在这里读到: 获取 cookie 过期时间
只有名称和值被发送到服务器,因此没有其他 cookie 数据可用。
那意味着没有办法获取cookie的过期日期?所以我必须将该日期保存在我的数据库中,如果我以后需要它?
没错,只返回cookie-name和cookie-value。
这不是 Rails 或 PHP 的缺点,它在RFC 6265中是这样定义的:
请注意,不会返回 cookie 属性。特别是,服务器无法仅根据 Cookie 标头确定 cookie 何时过期、cookie 对哪些主机有效、cookie 对哪些路径有效,或者 cookie 是否设置了 Secure 或 HttpOnly 属性。
虽然公认的答案是正确的,但我来到这里是因为我想确保我的应用程序设置一个永久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
反而。