我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
代替。