Selesaikan ralat getImageData(): kanvas dicemari oleh data merentas domain
P粉343141633
P粉343141633 2023-08-29 12:52:11
0
1
570
<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粉343141633
P粉343141633

membalas semua(1)
P粉465675962

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan