Maison  >  Questions et réponses  >  le corps du texte

Résoudre le problème de l'erreur getImageData() : le canevas est contaminé par des données inter-domaines

<p>Mon code fonctionne correctement sur localhost mais pas sur le site Web. </p> <p>Je reçois cette erreur de la console, pour cette ligne <code>.getImageData(x,y,1,1).data</code>:</p> <pre class="brush:php;toolbar:false;">Erreur de sécurité non interceptée : échec de l'exécution de "getImageData" sur "CanvasRenderingContext2D" : le canevas a été entaché de données d'origine croisée.</pre> <p>Une partie de mon code :</p> <pre class="brush:php;toolbar:false;">jQuery.Event.prototype.rgb=function(){ var x = this.offsetX || (this.pageX - $(this.target).offset().left),y = this.offsetY || (this.pageY - $(this.target).offset(). haut); if (this.target.nodeName!=="CANVAS") renvoie null ; renvoie this.target.getContext('2d').getImageData(x,y,1,1).data; }</pré> <p><strong>Remarque : </strong>L'URL de mon image (src) provient d'une URL de sous-domaine</p>
P粉343141633P粉343141633392 Il y a quelques jours505

répondre à tous(1)je répondrai

  • P粉465675962

    P粉4656759622023-08-30 09:13:14

    Comme d'autres l'ont dit, vous "polluez" le canevas en chargeant à partir d'un domaine d'origine croisée.

    https://developer.mozilla.org/en-US/docs/ HTML/CORS_Enabled_Image

    Cependant, vous pouvez éviter cela en définissant simplement :

    img.crossOrigin = "Anonymous";

    Cela ne fonctionne que si le serveur distant définit correctement les en-têtes suivants :

    Access-Control-Allow-Origin "*"

    Le Sélecteur de fichiers Dropbox lors de l'utilisation de l'option Direct LinkC'est un excellent exemple. Je l'utilise sur oddprints.com pour aspirer des images d'une URL d'image de boîte de dépôt distante dans mon canevas, puis soumettre les données d'image à mon serveur. Le tout écrit en JavaScript

    répondre
    0
  • Annulerrépondre