1

私はWindows用のHTML5ゲームエディタであるConstruct2の開発者です。http://www.scirra.comにあります。

最近、キャンバス上で画像を変換して画像を変更する機能を追加しようとしています。非常に簡単です。キャンバスに画像を描画し、呼び出しgetImageData()てピクセルを取得します。

ユーザーがアプリケーションで[プレビュー]をクリックすると、すべてのファイルがディスク上の一時ファイルにダンプされ、ブラウザが起動して表示されます。サーバーにアップロードすることはプレビューのオプションではありません-一部のゲームはメガバイトの大きさです。

ただし、ほとんどのブラウザは、ディスクからロードされた画像getImageData()のピクセルを取得するために使用することをまったくブロックします。MDNがfile://アクセスポリシーの説明で示唆しているように、必要なすべての画像ファイルをサブディレクトリに配置しようとしました。それもうまくいきません!

Chromeの--allow-file-access-from-filesフラグで修正されています。ただし、すべての主要なブラウザをサポートする必要があります。少なくともInternetExplorerとFirefoxに同様の回避策はありますか?Internet Explorerについてはわかりませんが、Firefoxのabout:configに手動でアクセスする必要がないものがあればいいのにと思います。そうしないと、「Firefoxで機能しないのはなぜですか?」というサポートリクエストが殺到します。

また、なぜこのセキュリティポリシーが必要なのですか?!?それはやり過ぎのようで、私たちのようなアプリケーションを書くのは本当に難しいです。

助けていただければ幸いです。

4

1 に答える 1

3

あなたの名前は HN から聞き覚えがあります。

これは、非常に多くの人々を動揺させますが、これまでの仕様ではかなり決まっています。http://file://は異なる起源であり、一方を他方に置こうとするものはすべて起源を汚します。あなたが指摘したように、ファイル uri 自体には、物事をさらに複雑にする独自の一連のルールがあります。

原点が違うキャンバスに何かを描く?残念なことに、以降の origin-clean フラグは false になり、さまざまなことを行うことができなくなります。

それらの完全なリストは、こちらの仕様にあります。

しかし、私はあなたが今までにこれらすべてを知っていると確信しています. あなたはそれを回避したいです。

その周りのブラウザを強化しようとする代わりに、何らかの軽量 Web サービスにバンドルして、すべてが同じオリジンから表示されるようにすることをお勧めします。これにより、将来的に頭痛が大幅に軽減されます。

おそらく、 Python SimpleHTTPServerのようなものが必要になるでしょう。しかし、その決定は、この時点で製品にすでに含まれているものに大きく依存します.

于 2011-07-15T16:54:56.157 に答える