Google ChromeがXMLHttpRequestを使用してローカルファイルからURLをロードすることを許可する


125

ローカルファイルからXMLHttpRequestを使用してHTTPリクエストを実行しようとすると、基本的にAccess-Control-Allow-Origin違反のために失敗します。

しかし、私はローカルWebページを自分で使用しているので、Google Chromeにローカルファイルからインターネット上のURLへの要求を許可する方法があるのか​​と思っていました。

たとえば、$.get('http://www.google.com/')ローカルファイルで実行すると失敗しますが、自分でスクリプトを作成して自分で使用しているので、抑制してURLをロードできれば非常に便利です。

では、Google ChromeがローカルファイルからXMLHttpRequestを使用してURLをロードできるようにするにはどうすればよいですか?


1
Access-Control-Allow-Origin: nullウェブサイトで動作します。(google.com以外の場合)
inf3rno 2014年

3
@JessamynSmith:回答の順序が変更され、承認された回答も変わる可能性があるため、「承認された回答の下の回答」のようなことを言うよりも、回答にリンクする方が良いでしょう。回答の「共有」リンクにつながるURLを使用します。
Michael Scheper、2015年

2
@MichaelScheper機能した実際のコマンドに貼り付けたので、コメントはあまり関係ありません。ただし、リンクを含めることに価値がある場合は、削除して再投稿しました。最新のChromeでは、エラーは次のようになります。XMLHttpRequestはfile:///path/to/file/css/base.cssを読み込めません。クロスオリジンリクエストは、プロトコルスキーム(http、data、chrome、chrome-extension、https、chrome-extension-resource)でのみサポートされています。この回答stackoverflow.com/a/4819114/1649165は私のために働きました、すなわちコマンドラインからchromeを実行します:chrome --allow-file-access-from-files
Jessamyn Smith

@JessamynSmith:申し訳ありませんが、私のアドバイスは無関係だと思いました。特定の回答は関連性があると考えたので、コメントを将来にわたって保証したいと思うかもしれません。私の間違い。
Michael Scheper、2015年

回答:


49

起動時のクロム --disable-web-security

Windowsの場合:

chrome.exe --disable-web-security

Macの場合:

open /Applications/Google\ Chrome.app/ --args --disable-web-security

これにより、クロスドメインリクエストが可能になります。
これがローカルファイルでも機能するかどうかはわかりませんが、お知らせください!

そして、これはあなたが期待することを正確に行います、それウェブセキュリティを無効にするので注意してください。


MacでSafariを使用することもできます。リクエストがローカルファイルから行われた場合、デフォルトでローカルファイルへのAJAXを許可します。また、「。exe」については、Qの中でWindowsについて何も言われていません。PimはWindows開発者ですが、それでもWindowsについては何も言われていません。

1
はい、Windowsを使用しています。申し訳ありません。これを今試してみます、ありがとう。ちなみに、パソコンの電源が入っているときは常にChromeを実行しています。ローカルファイルを使用したクロスドメインリクエストのみを許可する方法や、特定のタブのみを許可する方法はありますか?この方法では、実際に同時にインターネットを安全に閲覧することはできません...
pimvdb '27

1
私は、最新のChromiumビルドをダウンロードして、スタンドアロンの安全でないバージョンをテスト用に実行し、「実際の」インストール済みChromeを使用して安全にインターネットを閲覧できるようにしました。そしてそれはうまくいきます、ありがとう!
pimvdb 2011年

@Tom -あなたは限り、あなたが使用して、任意の設定を変更せず、サファリとMac上でこれを行うことができるはず「ファイルを:///」プロトコルをしていない「ローカルホスト
近くPrivman

2
Safari 10.1で試してみたところXMLHttpRequest cannot load file:///<my_local_file>. Cross origin requests are only supported for HTTP.、このスレッドからのSafariブラウザに関する記述は無効になりました。
Michal Cichon 2017年

233

--disable-web-securityスイッチの使用は非常に危険です。XMLHttpRequestが--allow-file-access-from-filesスイッチを使用して他のファイルからファイルにアクセスすることを許可できるのに、なぜセキュリティをまったく無効にするのですか?

これらのコマンドを使用する前に、Chromeの実行中のインスタンスをすべて終了してください。

Windowsの場合:

chrome.exe --allow-file-access-from-files

Macの場合:

open /Applications/Google\ Chrome.app/ --args --allow-file-access-from-files

Chrome のこの「機能」についての議論:


5
毎回ターミナル/コマンドラインやカスタムショートカットを開かなくても、これをデフォルトの動作にすることはできますか?
Kokodoko 2014

1
@ココドコだと思います。
コンスタンチンスモリャニン2014年

2
@JoshH私は、Webサイトの開発にローカルWebサーバーを使用してから、ブラウザーでローカルファイルに直接アクセスする方がはるかに良いことに完全に同意します。しかし、正確な質問が尋ねられ、私はちょうどそれに答えました。
コンスタンチンスモリャニン2014

13
他の誰かがこれを試そうとしている場合:このフラグは使用不可/変更不可chrome://flags
Blaise

5
@pimvdbこれを承認済みの回答としてマークする必要があると思います。
chris-l

21

Macバージョン。ターミナルから:

open /Applications/Google\ Chrome.app/ --args --allow-file-access-from-files

私はここでいくつかの反対票を見ています。私の答えのどこが悪いのか詳しく説明していただけますか?
2016

他の回答が説明するように、これを変更する特定のスイッチがある場合、すべてのWebセキュリティを無効にすることを提案するのは賢明ではありません。
curiousdannii

より永続的な解決策があればよいでしょう。これは、ユーザーが事前に知っていて、Chromeの再起動が必要であることを前提としています。
Michael Dunn

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.