我在这里读到: Get cookie expiration
只有名称和值被发送到服务器,因此没有其他cookie数据可用。
这意味着无法获取Cookie的到期日期? 所以我必须在我的数据库中保存该日期,如果我以后需要它?
答案 0 :(得分:6)
没错,只返回 cookie-name 和 cookie-value 。
这不是Rails或PHP的缺点,它在RFC 6265中以这种方式定义:
请注意,不会返回cookie属性。特别是, 一个服务器无法单独从Cookie标头确定 cookie将过期,cookie的有效主机为哪个 cookie的路径有效,或者cookie是否设置为 安全或HttpOnly属性。
答案 1 :(得分:0)
虽然接受的答案是正确的,但我来到这里是因为我想确保我的应用程序设置永久 cookie(在远期将来有一个到期日期),而不是正常的。< / p>
如果您想验证是否是这种情况(并且您不关心确切的到期日期),您可以设置这样的期望(该示例使用Mocha gem):
ActionDispatch::Cookies::PermanentCookieJar.any_instance.expects(:[]=).with(:key, "value").once
此预期只会通过cookies.permanent[:key] = "value"
的一次调用而传递,但cookies[:key] = "value"
会失败。
它也适用于签名的cookie(cookies.permanent.signed[:key] = "value"
)。但请注意,已签名的Cookie会根据您应用的secret_key_base
加密其值,因此您必须将期望值调整为
ActionDispatch::Cookies::PermanentCookieJar.any_instance.expects(:[]=).with(:key, anything).once
代替。