読者です 読者をやめる 読者になる 読者になる

/home/by-natures/dev*

ソフトウェア開発者として働く人の技術的なメモ

サーバ側からクッキーの有効期限は取得できない

Stackoverflow を眺めていたら、こんな Question がありました:

How to get cookie's expire time

Flask - How to get a cookie expiration time?

PHP / Python(つまりサーバ側)からクッキーの Expiration time を取得したい、というものです。

結論としては、クライアントはサーバへ Expiration time を送らないため、サーバ側からは取得できないようです。Expiration time 自体を別のクッキーの値に保存するとか代替手段はあるようですが、そんなことせずにアプリケーション実装できるのがよさそうですね…

Cookie に関する RFC, RFC2965RFC 6265 を読んでみたのですが、こちらには上の内容は含まれていないようでした。しかし Microsoft の ASP.NET でのクッキーの扱いのページ に、こんな記述があります:

Changing a Cookie's Expiration Date The browser is responsible for managing cookies, and the cookie's expiration time and date help the browser manage its store of cookies. Therefore, although you can read the name and value of a cookie, you cannot read the cookie's expiration date and time. When the browser sends cookie information to the server, the browser does not include the expiration information. (The cookie's Expires property always returns a date-time value of zero.) If you are concerned about the expiration date of a cookie, you must reset it, which is covered in the "Modifying and Deleting Cookies" section.
(和訳) クッキーの有効期限の変更 ブラウザはクッキーの管理に責任を負うため、クッキーの有効期限はブラウザがクッキーの保存を管理するサポートをします。つまり、クッキーの名前や値を読むことが出来ても、その有効期限は読むことは出来ません。ブラウザがクッキーの情報をサーバへ送る際も、有効期限の情報は含まれません。もしクッキーの有効期限に関心がある場合、クッキーを一度リセットする必要があります(詳しくは "modifying and Deletting Cookies" のセクションを参照のこと)

ちょっと勉強になったのでメモでした。