4

事前に画像がペイントされたキャンバスから画像データを読み込もうとすると、Google Chrome はクロス オリジン例外を発生させます (キャンバスが「汚染されている」と不平を言います)。ディレクトリ構成は以下の通りです。

/html/base/path
|-- index.html         contains the canvas element, references the script.js
|-- script.js          loads imgs/images.jpg, paints and queries the canvas
`-- imgs/image.jpg

このエラーは、ページが file:// スキームによって読み込まれた場合にのみ発生します。

これはChromeのバグなのだろうか。そうでない場合、どの規則が適用されますか? 回避策はありますか?

残念ながら、オフラインでの視聴は究極のユース ケースです。

  • file:// スキームは不可欠です
  • ターゲット システムでブラウザの設定を制御することはできません。
4

3 に答える 3

4

で読み込まれたファイルfile://は、常に異なるドメインからのものと見なされます。これはバイパスできない機能です。

HTML5 仕様の Origin の定義から:

ドキュメントが他の方法で取得された場合 (例: データ: ユーザーが入力した URL、createDocument() API を使用して作成されたドキュメントなど) オリジンは、ドキュメントの作成時に割り当てられるグローバルに一意の識別子です。

読み込みプロトコルがfile:.


あなたの状況でがおそらくすること(あなたのコメントから正しく理解できれば):外部ストレージメディアでリリースできる小さなプログラムを作成し、httpサーバーを起動してWebブラウザーを起動します。Goでそれを行います (http サーバーを 2 ~ 3 行で簡単に作成でき、Linux、Mac、および Windows のネイティブ コンパイルで、必要なすべての実行可能ファイルを提供できます) が、他の言語も使用できます。

于 2012-09-25T17:03:14.063 に答える
3

フラグを付けて Chrome を起動するように指示します--allow-file-access-from-files

それ以外では、エラーを回避するためにローカル サーバー インスタンスを実行する必要があります。

于 2012-09-25T17:24:57.023 に答える
1

これは、実際には新しい Chromium セキュリティ ポリシーです。上で epascarello が述べたように、このポリシーを無効にする以外に何もできません。このバグにスターを付けてください、彼らはこのルールを緩めたいと思っていました。

この回答も確認してください。

于 2013-10-20T21:31:02.653 に答える