BOOK Studio947
狩野祐東・狩野さやか著書

Chromeはローカルファイルからcookieの読み/書きができない

Chromeは、デフォルトの設定ではローカルのHTMLファイルからcookieの読み/書きができないようになっています(ローカルファイルとはPCに保存されたHTMLファイルをダブルクリックして開いた状態のことで、アドレスバーのURLの冒頭が「file:///」になっている)。

 ためしに、ローカルのHTMLファイルをChromeで開いて、さらにデベロッパーツールを表示させます(右上のメニュー─[その他のツール]─[デベロッパー ツール])。HTMLファイルはどんなものでもOKです。
 そしてデベロッパーツールの[Resources]タブをクリックし、左の一覧から[Cookies]─[Local Files]の順にクリックすると、“By Default cookies are disabled for local files. …” と表示されます。つまり、ローカルファイルのcookieは無効になっています。

ローカルファイルのデベロッパーツールを表示させたところ
ローカルのHTMLファイルを開いたときのデベロッパーツールの表示

Chromeの設定を変えて起動…できない?

 さて、このデベロッパーツールの表示の続きを最後まで読んでみると…

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」と入力するとこんな画面が出てきます。

chrome://flags と入力して設定画面を開いたところ
chrome://flags

 この一覧の中から有効にしたい機能の「有効にする」をクリックしてオン/オフするわけですが、この一覧にはローカルHTMLファイルのクッキーを使用可能にするようなオプションはありません。

 うーん、「設定変更できる」と書いてあるけれど、ChromeでローカルHTMLファイルのクッキーを使用可能にするのはむずかしそうですね。

 このChromeのcookieの問題に限らず、ブラウザはオンラインとオフラインで動作が違うことがあるので、どんな簡単なものでも基本的にはWebサーバーを立てて開発しなさいよ、ということなのでしょうね。ブラウザで完結するようなcookieの使い方は実際にはあまりしないので大きな問題ではないのかもしれませんが、いちいちWebサーバーが必要だというのは、ちょっと試したいときとか勉強を始めたばかりの初心者にはそんなに簡単じゃないと思うんですけど。

参考にしたサイト

この記事の書籍との関連

確かな力が身につくJavaScript「超」入門』(狩野祐東著/SBクリエイティブ刊)サンプル5-03、p.212

※この記事に使用したGoogle ChromeアイコンはBSDライセンスで提供されているものです。

狩野 祐東

Web/アプリケーションUIデザイナー、エンジニア。執筆家。 アメリカ・サンフランシスコに留学、UIデザイン理論を学ぶ。Webサイトやアプリケーションのデザイン・開発、関連技術書籍の執筆を数多く手がける。株式会社Studio947代表。