解決getImageData()錯誤:畫布被跨域資料污染的問題
P粉343141633
P粉343141633 2023-08-29 12:52:11
0
1
501

我的程式碼在本機上運作得很好,但在網站上卻無法運作。

我從控制台收到此錯誤,對於這一行 .getImageData(x,y,1,1).data:

Uncaught SecurityError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data. 

我的程式碼的一部分:

jQuery.Event.prototype.rgb=function(){ var x = this.offsetX || (this.pageX - $(this.target).offset().left),y = this.offsetY || (this.pageY - $(this.target).offset(). top); if (this.target.nodeName!=="CANVAS")return null; return this.target.getContext('2d').getImageData(x,y,1,1).data; }

注意:我的映像網址 (src) 來自子網域網址

P粉343141633
P粉343141633

全部回覆 (1)
P粉465675962

正如其他人所說,您透過從跨源域載入來「污染」畫布。

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

但是,您可以透過簡單地設定來防止這種情況:

img.crossOrigin = "Anonymous";

只有當遠端伺服器正確設定以下標頭時,這才有效:

Access-Control-Allow-Origin "*"

使用「直接連結」選項時的Dropbox 檔案選擇器這就是一個很好的例子。我在oddprints.com上使用它來將遠端保管箱圖像網址中的圖像吸到我的畫布中,然後將圖像資料提交回我的伺服器。全部用 JavaScript 寫

    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!