スマホブラウザでのセッションクッキーの有効期限
サイトへJSでタブインターフェースや文字サイズ変更機能を実装したとします。
これらは他のページへ遷移する毎にリセットされるため、一時的にクッキーなど(※)に状態を保存するような対応をするかと思いますが、
PCブラウザと違い「ブラウザを終了する」機会の少ないスマホブラウザはどのタイミングでセッションクッキーが削除されるのでしょうか?
※対象環境次第で(HTML5の)sessionStorageやlocalStorageの使用を検討
そこで、スマホブラウザのセッションクッキーの有効期限を把握すべく検証しました。
環境別の検証結果
- iOS5.1.1 + Safari
-
削除されない動作
- ホームボタンを押して終了。(実際にはバックグラウンドでブラウザが動作しており終了していない)
削除される動作
-
下記手順にてSafari終了。
ホームボタン2度押し→Safariアイコン長押し→アイコンが揺れだしたら再度Safariアイコンをタップ - 端末の再起動(電源オフ→オン)
- Android2.3.4 + 標準ブラウザ
-
削除されない動作
- ホームボタンを押して終了。(iOS同様にバックグラウンドで動作)
- タスクキラー(アプリ)でブラウザを終了。(バックグラウンドで動作していないがクッキー生存)
削除される動作
- 端末の再起動(電源オフ→オン)
今後の予定
時間の経過(30分、1時間、1日etc)で削除されるか?などを検証予定です。
また、セッションクッキーに限らずsessionStorageの削除されるタイミングについても検証予定。
最後に
時間の経過で削除される仕様でなければセッションクッキーの生存期間はかなり長いと考えられます。
本調査の過程で気づいたことですが、PC版Chrome、Firefoxなどを終了してもセッションクッキーが削除されない状況がありました。
それはブラウザの設定で、起動時に前回のタブを復元する設定にしているとセッションクッキーも生存し続けます。
※新しいページや、規定のページを開く設定の場合は削除されます。
スマホブラウザも上記PCブラウザと同じ状況で、前回開いていたタブを復元するようになっているためセッションクッキーが生存し続けるのだと考えられます。
厳密に一時的な状態保存が必要な場合は、有効期限を設定しない(セッションクッキー)のではなく、max-age属性で1時間後まで有効といった実装を検討した方が確実なように思います。