Chrome Cookie expire 問題

ログインフォームの実装時、ブラウザを閉じてもSessionクッキーが残ってしまい、ログアウトされない現象でハマったのでメモ。

Cookieの expire を 0 に設定する事で、ブラウザを閉じた時点でCookieが削除される。はずだと思っていたのですが、なぜかChromeだと削除されず永続的(?)にCookieが残ってしまいました。。

原因と対応方法

なんでも、Chromeの設定で「起動時」に「中断した箇所から続ける」を選択している場合におこるようです。。

ただ、同じ設定でもCookieが削除されているサービスがいくつかあったので、試しに expire を 1秒に設定したところ、再起動時にCookieが削除される事が確認できた。

Zendを使っていたので、Zend Framework (2じゃない..)の場合

// 変更前 (expire = 0) これだとCookieが削除されない
Zend_Session::forgetMe();

// 変更後 (expire = 1)
Zend_Session::rememberMe(1);

こんな事に小一時間悩まされるとは…非常に悔しい。。

ただこれだと、IE9ではCookie expire が短い場合Cookieを保持してくれないようです。。

ちなみに

[設定] > [詳細設定を表示] > [コンテンツの設定] > [ブラウザを終了するまでローカル データを保存する] にチェックすると、中断した箇所から続けてもsessionのcookieは消えました chromeのsession cookie | げんげんブログ

上記試したのですが、この設定はCookieのexpireの扱いを変えるのではなく、ブラウザを閉じた時点で全てのCookieを含むローカルデータを削除するようです。

参考

SHOTA

I'm WEB developer

Tokyo, Japan http://senta.me/