getImageData() の「キャンバスがクロスオリジン データによって汚染されています」エラーを回避する方法
getImageData( ) メソッドを使用してキャンバスからピクセル データを取得すると、「キャンバスはクロスオリジン データによって汚染されています。」というエラーが発生する場合があります。このエラーは、別のドメインからロードされたデータの影響を受けたキャンバス上のピクセル データにアクセスしようとすると発生します。
このエラーの原因を理解するには、ほとんどのブラウザに実装されているセキュリティ サンドボックスを考慮してください。デフォルトでは、ブラウザーは異なるオリジン間の通信を制限します。つまり、あるドメインからロードされたデータを別のドメインで使用することはできません。キャンバス要素が別のオリジンからのデータで汚染されている場合、その要素は「汚染されている」とみなされます。
キャンバスを汚染する一般的な方法の 1 つは、コードで述べたように、サブドメイン URL から画像を読み込むことです。このエラーを防ぐには、
1 のいくつかのオプションがあります。 「crossOrigin」属性を設定する
適切な値を使用して画像要素に「crossOrigin」属性を割り当てます:
これにより、リモート サーバーが適切な CORS ヘッダーを設定していると仮定して、スクリプトが画像のピクセル データにアクセスできるようになります。
2. CORS ヘッダーが設定されていることを確認する
画像を提供するリモート サーバーで、次の CORS ヘッダーが送信されていることを確認します:
Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET Access-Control-Allow-Headers: Content-Type
これらのヘッダーは、スクリプトへのクロスオリジン アクセスを許可し、キャンバスから画像データを取得できるようにします。
3.プロキシ サーバーを使用する
リモート サーバーに CORS ヘッダーを設定できない場合は、プロキシ サーバーを使用してクロスオリジン制限を回避できます。プロキシ サーバーは、スクリプトとリモート サーバーの間の仲介者として機能し、異なる送信元間のデータ転送を容易にします。
これらの解決策のいずれかを実装することで、「キャンバスが相互接続によって汚染されています」という問題を防ぐことができます。 getImageData() で原点データ」エラーが発生し、別のドメインからロードされた画像のピクセル データにアクセスします。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3