Chromeはローカルファイルからcookieの読み/書きができない
- 2016-01-27
- 確かな力が身につくJavaScript「超」入門
- browser / javascript
Chromeは、デフォルトの設定ではローカルのHTMLファイルからcookieの読み/書きができないようになっています(ローカルファイルとはPCに保存されたHTMLファイルをダブルクリックして開いた状態のことで、アドレスバーのURLの冒頭が「file:///」になっている)。
ためしに、ローカルのHTMLファイルをChromeで開いて、さらにデベロッパーツールを表示させます(右上のメニュー─[その他のツール]─[デベロッパー ツール])。HTMLファイルはどんなものでもOKです。
そしてデベロッパーツールの[Resources]タブをクリックし、左の一覧から[Cookies]─[Local Files]の順にクリックすると、“By Default cookies are disabled for local files. …” と表示されます。つまり、ローカルファイルのcookieは無効になっています。
さて、このデベロッパーツールの表示の続きを最後まで読んでみると…
By default cookies are disabled for local files. You could override this by starting the browser with –enable-file-cookies command line flag.
デフォルトではローカルファイルのクッキーは無効になっている。この設定は「–enable-file-cookies」コマンドラインフラグで上書きすることができる
コマンドラインフラグとは、Chromeを起動するときに起動オプションを指定するためのコマンドです。下記の参考サイトにコマンドを実行する方法が書いてあります。ということは、このコマンドラインフラグを使えばローカルHTMLファイルでもcookieが読み書きできるはず… ですが、わたしが試してみたところ受け付けませんでした(Google Chrome 48.0.2564.82m/Windows 10、同48.0.2564.82(64-bit)/Mac OS X 10.10.5 でテスト)。
もうひとつ、Chromeには試験的な機能をオン/オフする機能があります。アドレスバーに「chrome://flags」と入力するとこんな画面が出てきます。
この一覧の中から有効にしたい機能の「有効にする」をクリックしてオン/オフするわけですが、この一覧にはローカルHTMLファイルのクッキーを使用可能にするようなオプションはありません。
うーん、「設定変更できる」と書いてあるけれど、ChromeでローカルHTMLファイルのクッキーを使用可能にするのはむずかしそうですね。
このChromeのcookieの問題に限らず、ブラウザはオンラインとオフラインで動作が違うことがあるので、どんな簡単なものでも基本的にはWebサーバーを立てて開発しなさいよ、ということなのでしょうね。ブラウザで完結するようなcookieの使い方は実際にはあまりしないので大きな問題ではないのかもしれませんが、いちいちWebサーバーが必要だというのは、ちょっと試したいときとか勉強を始めたばかりの初心者にはそんなに簡単じゃないと思うんですけど。
--enable-file-cookies
はリストされていません。このオプションそのものがないのかもしれません『確かな力が身につくJavaScript「超」入門』(狩野祐東著/SBクリエイティブ刊)サンプル5-03、p.212
※この記事に使用したGoogle ChromeアイコンはBSDライセンスで提供されているものです。