Rumah  >  Soal Jawab  >  teks badan

Selesaikan ralat getImageData(): kanvas dicemari oleh data merentas domain

<p>Kod saya berfungsi dengan baik pada localhost tetapi tidak pada tapak web. </p> <p>Saya mendapat ralat ini daripada konsol, untuk baris ini <kod>.getImageData(x,y,1,1).data</code>:</p> <pre class="brush:php;toolbar:false;">Uncaught SecurityError: Gagal melaksanakan 'getImageData' pada 'CanvasRenderingContext2D': Kanvas telah dicemari oleh data silang asal.</pre> <p>Sebahagian daripada kod saya:</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(). atas); jika (this.target.nodeName!=="CANVAS")mengembalikan null; kembalikan this.target.getContext('2d').getImageData(x,y,1,1).data; }</pre> <p><strong>Nota: </strong>URL imej saya (src) berasal daripada URL subdomain</p>
P粉343141633P粉343141633441 hari yang lalu557

membalas semua(1)saya akan balas

  • P粉465675962

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

    Seperti yang orang lain katakan, anda "mencemarkan" kanvas dengan memuatkan daripada domain silang asal.

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

    Namun, anda boleh mencegah perkara ini dengan hanya menetapkan:

    img.crossOrigin = "Anonymous";

    Ini hanya berfungsi jika pelayan jauh menetapkan pengepala berikut dengan betul:

    Access-Control-Allow-Origin "*"

    Pemilih fail Dropbox apabila menggunakan pilihan Pautan TerusIni adalah contoh yang bagus. Saya menggunakan ini di oddprints.com untuk menyedut imej daripada URL imej dropbox jauh ke dalam kanvas saya dan kemudian menyerahkan kembali data imej ke pelayan saya. Semua ditulis dalam JavaScript

    balas
    0
  • Batalbalas