Pastalablog in はてな

時代はブログ! 日記もあるよ→http://pastak-diary.hatenadiary.com

SafariはプライベートブラウジングモードだとlocalStorageが使えない

割と前から既知だったようだけど、今日ちょうど直面した。
詳細については及川さんのブログが詳しい。
HTML5のストレージ技術とプライベートブラウジング - Nothing ventured, nothing gained.

ブラウザがプライベートブラウジングモードかどうかは当然知られたくない情報だろうから、UAとかから分かることもなくて、localStorageに書き込もうとしたら、エラーになるから分かる。

make a record of…: [iPhone] プライベートブラウズモードだとストレージが使えないとかでも書かれてるように、localStorage.setItemとかする部分をtry{~~}catch{~~}で囲んでやるしかない。

認証ボタンを押したことをクライアント側で知っておきたいというために利用していたので、プライベートブラウジングモードだとlocalStorageに書き込めなくて認証画面が無限ループする状態だった。

スマートフォン向け実装だから、極力サーバとの通信回数を減らすべくlocalStorageを使う選択をしたのに思わぬところでサーバと通信させないといけなくなったという感じ。