jnobuyukiのブログ

研究していて困ったことやその解決に関するメモ。同じように困ったあなたのために。twitter ID: @j_nobuyuki

ブラウザからローカルファイルへのアクセス方法

問題:ブラウザからローカルファイルへのアクセス

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のアドレスを打ち込むボックスに、

chrome://version/

と書き込みます。するとバージョン情報というタブが開きます。コマンドラインという項目の中に先ほどの、

 --allow-file-access-from-files

が書き込まれていればOKです。

 

ここまでの方法は、以下のウエブページを参考にしました。

https://sites.google.com/site/thesubstituteformemo/Home/google-chrome-chromium/kidou-opushon 

 

 解消策2:ローカルサーバーの設立

ローカルファイルへのアクセスが困難なので、仮想のサーバーを設立して、サーバー経由でファイルにアクセスする方法です。ネット上でたくさんの人がpythonを利用する方法を推奨しています。

 

準備:pythonのインストール

pythonは以下のウエブページからダウンロードできます。

http://www.python.jp/

バージョンが2から始まるもの(以下2系)と、3から始まるもの(3系)があります。今回の目的ではどちらも利用できますが、コマンドが違う点に注意しましょう。

また、インストール完了後、pythonの「パスを通して」おきます。つまり、コマンドプロンプト

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番号を指定できます。

 

ブラウザでローカルサーバーの内容を表示するにはブラウザのウエブページアドレスを、

http://127.0.0.1:8000

と記入します。(port番号を変えた場合は8000の部分を変えた番号にします)

表示された内容は、pythonでローカルサーバーを設定したときの作業ディレクトリになっているはずです。なので、作業ディレクトリをcdコマンドなどであらかじめ変更しておく必要があります。

また、ローカルサーバーを終了するには、コマンドプロンプトをアクティブにした状態で、

Ctrl + c

を押します。

 

まとめ:二つの解消策の比較

それぞれの解消策を比較するとメリット・デメリットが見えてきます。

ブラウザの設定を変更する方法のメリットは簡単なことです。特に、自分のPC以外を使う場合は、pythonをインストールしなくて済むので、簡単さが大きな意味を持ちます。デメリットは、セキュリティのレベルが下がることです。自らポリシーを変更したことを忘れてはいけません。ローカルサーバーを設定する方法のメリットとデメリットはこの逆になります。つまり、セキュリティレベルが維持されるのですが、pythonをインストールする手間がかかります。