問題:ブラウザからローカルファイルへのアクセス
JavaScriptを使ってブラウザからローカルファイルにアクセスしたいとします。ブラウザによっては、これがすぐにできません。なぜなら、ローカルファイルへのアクセスがブラウザのセキュリティポリシーとして禁止されているからです。今日は、この問題の解消策をまとめてみます。なお本ブログでは、特に断りがない限り、Windows環境でGoogle Chromeをブラウザとする場合を考えます。
解消策1: ブラウザのデフォルトセキュリティポリシーの変更
ブラウザのセキュリティポリシーで禁止されているのなら、そのポリシーを変更してしまおうという方法です。Chromeの場合起動オプションの変更は、Chromeの起動時に行います。ローカルファイルアクセスを許可するコマンドは、
--allow-file-access-from-files
です。Chromeのショートカットを利用して、このオプションを実行します。
1.デスクトップ上にChromeのショートカットを作る。
2.ショートカットのプロパティを開く
3.ショートカットタブを選択する
4.リンク先のボックスで、Chromeの実行ファイルのパスの後に
--allow-file-access-from-files
を書きくわえる。
これだけです。これをした後で、このショートカットからChromeを起動すると、ローカルファイルアクセスが可能です。
この起動オプションの実行を確かめたい場合は、Chromeのアドレスを打ち込むボックスに、
と書き込みます。するとバージョン情報というタブが開きます。コマンドラインという項目の中に先ほどの、
--allow-file-access-from-files
が書き込まれていればOKです。
ここまでの方法は、以下のウエブページを参考にしました。
https://sites.google.com/site/thesubstituteformemo/Home/google-chrome-chromium/kidou-opushon
解消策2:ローカルサーバーの設立
ローカルファイルへのアクセスが困難なので、仮想のサーバーを設立して、サーバー経由でファイルにアクセスする方法です。ネット上でたくさんの人がpythonを利用する方法を推奨しています。
準備:pythonのインストール
pythonは以下のウエブページからダウンロードできます。
バージョンが2から始まるもの(以下2系)と、3から始まるもの(3系)があります。今回の目的ではどちらも利用できますが、コマンドが違う点に注意しましょう。
また、インストール完了後、pythonの「パスを通して」おきます。つまり、コマンドプロンプトで
と書くだけでpythonを起動できるようにします。
1.コントロールパネルから「システムとセキュリティ」➟「システム」を選択します。
2.システムの詳細設定を選択します。
3.環境変数のボタンをクリックします。
4.ユーザー環境変数の中からPathを選んで編集します。pythonの実行ファイルが保存されているフォルダとsite-packagesという名前のフォルダのパスを書き込みます。
5.システム環境変数にも任意の名前をつけて、pythonの実行ファイルが保存されているフォルダとsite-packagesという名前のフォルダのパスを登録します。
これでpythonをコマンドプロンプトから簡単に呼び出せるようになりました。
方法:pythonを利用してローカルサーバーの設置
準備ができていればあとは簡単です。インストールしたpythonが2系の場合は、 python -m SimpleHTTPServer
3系の場合は
python -m http.server
とコマンドプロンプトに書き込むだけです。
うまくいった場合、コマンドプロンプト上には、
Serving HTTP on 0.0.0.0 port 8000 ...
というメッセージが出現します。
うまくいかない場合、何らかのエラーメッセージが表示されます。経験上、portが他の動作で使用中のことが多いです。なので、8000以外のport番号を指定してみましょう。例えば
python -m SimpleHTTPServer 8080
のようにするとport番号を指定できます。
ブラウザでローカルサーバーの内容を表示するにはブラウザのウエブページアドレスを、
と記入します。(port番号を変えた場合は8000の部分を変えた番号にします)
表示された内容は、pythonでローカルサーバーを設定したときの作業ディレクトリになっているはずです。なので、作業ディレクトリをcdコマンドなどであらかじめ変更しておく必要があります。
また、ローカルサーバーを終了するには、コマンドプロンプトをアクティブにした状態で、
Ctrl + c
を押します。
まとめ:二つの解消策の比較
それぞれの解消策を比較するとメリット・デメリットが見えてきます。
ブラウザの設定を変更する方法のメリットは簡単なことです。特に、自分のPC以外を使う場合は、pythonをインストールしなくて済むので、簡単さが大きな意味を持ちます。デメリットは、セキュリティのレベルが下がることです。自らポリシーを変更したことを忘れてはいけません。ローカルサーバーを設定する方法のメリットとデメリットはこの逆になります。つまり、セキュリティレベルが維持されるのですが、pythonをインストールする手間がかかります。