LoginSignup
5
1

More than 3 years have passed since last update.

【Firefox】でローカルファイル(file:///)を読み込んだ時にCORSエラーを出ないようにする

Posted at

TL;DR;

以下の手順で、開いたHTMLの親ディレクトリ配下のファイルはCORS制限を受けなくなります。

  1. about:config を開く
  2. privacy.file_unique_origin をfalseに設定

CORSについて

あるページで実行されているJavaScriptが、別ドメインのファイルにアクセスしようとしたときにそれを制限する「ブラウザの機能」です。
制限なので、アクセスされる側のサーバーに設定をするなどすることで許可することもできます。また、ブラウザの機能なので、起動オプションや一部のアドオンによっても無効化できるケースがあるようです。

元々は、エンドユーザーのセキュリティというよりは、他のサイトのスクリプトから勝手にコンテンツを盗用されないためのいわば著作権保護的な側面が強かったと聞いたことがあります。

http//example.com/index.html
<!-- 一般的なCORS、回避するにはサーバーの設定が必要 -->
<script>
var xhr = new XMLHttpRequest();
xhr.open( 'GET', 'http://hoge.com/data.hteml' );
xhr.send(); // CORSエラー!
</script>
file///c/Users/Admin/Downloads/index.hteml
<!-- 上記設定で回避可能な例 -->
<script>
var xhr = new XMLHttpRequest();
xhr.open( 'GET', 'file:///c/Users/Admin/Downloads/data.hteml' );
xhr.send(); // CORSエラー!同じ「file:///c」だけどダメ。
</script>

補足と弊害

元々はデフォルトで許可されていたらしいのですが、Firefox68からデフォで制限されるようになったらしいです。
(執筆時点(2020/05/18)では最新が 76)
理由としては「CVE-2019-11730 の対策」とのこと。
この「CVE-2019-11730」ですが、悪意のあるhtmlをダウンロードしてしまいそれをうっかり開いてしまったときに、ダウンロードフォルダの中身が自由にみられてしまうというものです。なので、上記オプションによりこのような攻撃に対して脆弱になっている状態だということは頭に入れておいてください。
(うっかり開いたのがhtmlではなくexeだったらなんでもありですがw)

参考

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1