25

Internet Explorer 10 は CORS を完全にサポートしているという印象を受けましたが、今はよくわかりません。

複数のドメインを使用し、画像データを読み取る JS/HTML5 アプリがあります。別のドメインから JS に画像をロードし、画像をキャンバスに imageDraw() してから、キャンバスで getImageData を使用しています。(クロスドメインの XMLHttpRequests は使用していません)。これが機能するためには、画像を提供しているサーバーに応答ヘッダーを設定する必要がありました。

access-control-allow-origin: *
access-control-allow-credentials: true

ロードする前に、JS の画像オブジェクトにこれを設定します。

image.crossOrigin = 'Anonymous'; //Also tried lowercase

これは、データを読み取ろうとするとセキュリティ エラーをスローする IE10 を除いて、すべての新しいブラウザーで正常に機能します。

SCRIPT5022: SecurityError

IE10 がこれらのクロス ドメイン イメージを汚染されないように処理するために必要なことはありますか?

アップデート:

以前の質問 に対するこの回答に気付きました。興味深いことに、この JSFiddleも IE10 では機能しません。これが IE10 で機能しないことを確認できる人はいますか?

4

2 に答える 2

7

確認済み: IE10 は、HTML 5 キャンバスで CORS 画像をサポートしていません。回避策については、 RReverser の回答を参照 してください。

編集

申し訳ありませんが、これまで CORS 画像を扱ったことがなく、この質問は AJAX リクエストに関するものだと思いました。

Mozilla Developer Networkによると、またはに設定image.crossOriginする必要があります。また、今日のそのページによると、これらの属性は IE、Safari、または Opera ではサポートされていません。 このテストは、IE9 がサポートしていないことを実証するために作成されたものであり、同じテストが IE10 でも失敗するようです。そのため、MDN の記事が書かれてから Safari と Opera がサポートを追加したとしても、IE10 がまだサポートされていない可能性は十分にあります。anonymoususe-credentials

私ができる唯一のヒントは、一般に、allow-credentials はワイルドカードの allow-originと互換性がないということです。allow-credentials をドロップするか、allow-origin でリクエスト Origin をエコーし​​ます。

以下は、画像またはビデオのキャンバス リソースではなく、AJAX 呼び出し用です。

IE10 の初期のバージョンには AJAX バグがあることが知られていましたが、

別のブラウザのバグである可能性があります。繰り返しになりますが、CORS を正しく処理するのは、一見したところトリッキーです。CORS の問題をデバッグするには、次の手順をお勧めします。

  1. ブラウザーでhttp://test-cors.appspot.com/#technicalにアクセスして、互換性レポートを取得します。何かが失敗した場合は、バグがあるか、ブラウザで CORS がサポートされていません。
  2. すべてが成功した場合は、テストが送信する CORS ヘッダーを開始点として使用して、CORS リクエストを機能させます。次に、一度に 1 つのヘッダーを変更し、アプリケーションに必要な方法でヘッダーを取得するか、説明または回避できないエラーが発生するまで再テストします。
  3. 必要に応じて、CORS リクエストを壊す 1 つの小さな変更について質問を投稿し、動作中の「前」と失敗した「後」の両方を投稿します。実行可能な例を含めることができれば、常に役に立ちます。

CORS テスト クライアントとサーバーの完全なコード (Google App Engine の Python スクリプト) は、https://github.com/rapportive-oss/cors-testで入手できます。

于 2013-06-09T17:58:32.550 に答える