TL;DR;
以下の手順で、開いたHTMLの親ディレクトリ配下のファイルはCORS制限を受けなくなります。
-
about:config
を開く -
privacy.file_unique_origin
をfalseに設定
CORSについて
あるページで実行されているJavaScriptが、別ドメインのファイルにアクセスしようとしたときにそれを制限する「ブラウザの機能」です。
制限なので、アクセスされる側のサーバーに設定をするなどすることで許可することもできます。また、ブラウザの機能なので、起動オプションや一部のアドオンによっても無効化できるケースがあるようです。
元々は、エンドユーザーのセキュリティというよりは、他のサイトのスクリプトから勝手にコンテンツを盗用されないためのいわば著作権保護的な側面が強かったと聞いたことがあります。
<!-- 一般的なCORS、回避するにはサーバーの設定が必要 -->
<script>
var xhr = new XMLHttpRequest();
xhr.open( 'GET', 'http://hoge.com/data.hteml' );
xhr.send(); // CORSエラー!
</script>
<!-- 上記設定で回避可能な例 -->
<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)