2016-10-26 1 views
1

私が最初にディスク上のシンプルローカルのhtmlファイルとしての私のアプリケーションのマニュアルを作成したい良くChromeとFirefoxの間のクロスオリジンの取り扱いの違いを理解しようと

背景。この目的のドキュメントを提供するには、次のように整理されると考えられていた。

doc 
├── index.html 
└── resources 
    ├── includes 
    │ ├── part1.html 
    │ ├── part2.html 
    │ └── part3.html 
    └── scripts 
     ├── makedoc.js 
     └── jquery-3.1.1.min.js 

だからドキュメントがindex.html(または私のアプリケーションでopenコマンドの平均経由)をクリックすると、デフォルトのWebブラウザで簡単に開くことができます。そしてindex.htmlはちょうど壊すアップマニュアルを参照してより小さなpartxx.htmlバラバラに支援するための容器として考えられていた:ちょうどなど、実際のコンテンツ+自動ナンバリングセクションでdivを交換するreplaceBodyPartsjQueryを使用して

<!DOCTYPE html> 
<html> 
<head> 
    <script src="./resources/scripts/makedoc.js"></script> 
    <script src="./resources/scripts/jquery-3.1.1.min.js"></script> 
    <script>$(document).ready(function() { replaceBodyParts(); }</script> 
</head> 
<body> 
    <div replaceWith="./resources/includes/part1.html"></div> 
    <div replaceWith="./resources/includes/part1.html"></div> 
    <div replaceWith="./resources/includes/part3.html"></div> 
</body> 

.. 。

問題

Firefでドキュメントを開きます牛(バージョン49.0.2)、問題はありません、素晴らしいです! (M version54.0.2840.71)Chromeでドキュメントを開くと...、私は次のエラーを取得する:

Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource

質問

このについてother threadsを読んだ後、私ははっきりとアクセスに関するセキュリティ上の懸念を理解します外部ドメインのローカルファイルシステム。それはクロム(でも最近のリリース)にFirefoxで動作していない、なぜ私の質問は、より多くのです:

  • これはFirefoxがindex.htmlが局部的に開かれていることを理解することは、より巧妙であることを意味しない、何のクロスオリジンの問題が存在しませんか?
  • これは、FirefoxがChromeよりも安全性が低いことを意味しますか?

NB:ローカルWebサーバーのインスタンス化やクロム設定の変更などのソリューションには興味がありません。これは、ユーザーが簡単に開くことができるローカルドキュメントです(たとえそれを読むためにChromeを使用するのではなく、firefoxを使用するようにしても、小さなドキュメントでも分割するというアイデアを放棄しなくてはなりません)。

答えて

2

Firefoxは明らかに安全性が低く、Chomeがロックダウンすることを意図的に許可しています。 (具体的には、HTMLファイルがローカルファイルであり、ユーザーのファイルシステム上の同じかそれ以上のディレクトリにある場合、FirefoxはHTMLページ内のスクリプトを実行してローカルファイルを読み取ることができます。 )。

であるべきかどうかは、利便性と機能性の相対的メリットについての意見の大部分は、悪用可能な状況をエンジニアリングしている可能性が高いということです。

FirefoxとChromeの開発者は明らかに異なる意見を持っています。

+0

これは、最初のURLが 'file:// c:/.../ doc/index.html'であることを検出することで、ここでfirefoxが特別な' cross-origin'バイパスを行っていないことを意味します。サーバーのfirefoxにマウントされていても、私のローカルファイルシステムでリクエストを得ることができます。 – CitizenInsane

+0

@CitizenInsane - 何ですか?いいえ。あなたの質問は「FirefoxとChromeのルールが異なるのはなぜですか? 「FirefoxとChromeのルールの違いは何ですか?」 – Quentin

+0

あなたの答えの明確化のために、Firefoxはすべてがローカルである場合にのみこれを許可してくれてありがとうございました...この場合、これは悪用される可能性のあるセキュリティ上の問題である可能性のある状況を見ることはできませんが、ブランケット禁止をするだけで、他の状況で間違っている可能性のあるバイパスを避けるほうが良いでしょう。 – CitizenInsane

関連する問題