我readed这里: Get cookie expiration如何在Rails中获取cookie过期时间?
,只有名称和值发送到服务器,所以没有其他的cookie数据是可用的。
这意味着无法获取cookie的到期日期吗? 所以我必须在我的数据库中保存这个日期,如果我以后需要它?
我readed这里: Get cookie expiration如何在Rails中获取cookie过期时间?
,只有名称和值发送到服务器,所以没有其他的cookie数据是可用的。
这意味着无法获取cookie的到期日期吗? 所以我必须在我的数据库中保存这个日期,如果我以后需要它?
没错,只有cookie名称和cookie值被返回。
这不是轨道或PHP的一个缺点,它在RFC 6265这样定义的:
注意,不返回的cookie的属性。特别是, 服务器无法单独确定cookie标头何时会过期,cookie的有效期限为哪个主机,其中的 路径Cookie是否有效,或者cookie是否使用安全或HttpOnly属性设置为 。
虽然接受的答案是正确的,我来到这里是因为我想确保我的应用程序设置一个永久饼干(在遥远的未来一个截止日期),而不是一个正常的。
如果您想验证是这种情况(和你不关心确切的截止日期),你可以设置一个这样的预期(该示例使用Mocha宝石):
ActionDispatch::Cookies::PermanentCookieJar.any_instance.expects(:[]=).with(:key, "value").once
这个期望会通过一个cookies.permanent[:key] = "value"
的呼叫,但会失败cookies[:key] = "value"
。
它也适用于签名饼干(cookies.permanent.signed[:key] = "value"
)。但是,请注意,签署cookie将有它的价值加密基于应用程序的secret_key_base
,所以你必须将预期调整到类似
ActionDispatch::Cookies::PermanentCookieJar.any_instance.expects(:[]=).with(:key, anything).once
代替。