Firefoxの「クッキー保存の毎回確認」だとJavaScriptで保存できない
Firefoxで次のようにJavaScriptを使って単純にクッキーを保存しようとしても動作しない。
<script type="text/javascript"> setcookie('cookie_check', '12345'); </script>
設定を見直していたら、どうもFirefoxの履歴設定で「Cookieを保存する期間」を「毎回確認する」と設定しているのが原因らしい。
この場合に、ロケーションバーからサイトの情報を確認したり、詳細を表示させても特にクッキー関連の表示は出てこない。
それで、クッキーの保存設定を他の「サイトが保存した期間まで」と切り替えてみる:
と、クッキーの保存や値の書き換えも問題なく動作する。
ここで元の設定の「毎回確認する」に戻すと、先に保存していたクッキー値の読み出しはできるのだが、その値を変更したり新たに保存したりということはできない。
これに対して、phpで次のように保存を試してみる:
<?php setcookie('check_php', '12345');
と、こちらだときちんと確認ダイアログが表示されて保存するサイト設定が有効になり、クッキーの保存も問題ない。
これでブラウザ側のサイト設定が「毎回確認する」→「許可」と切り替われば、それ以降はJavaScript側からもクッキーを保存することができるようになるようだ。
ブラウザのセキュリティ上の制限なのかもしれないが、JavaScriptでの動作時にブラウザの設定を切り替えるようにはなっていないらしい。困ったな。(一度は、php側で不要なクッキーの保存と削除を行なっておくとか??)
自前サイトの問題なのかと思って、他の方のページでも試したが、やはり保存期間を「毎回確認する」としていると(クッキーが保存できないため)「JavaScriptが無効」というような判定になってしまった。