引子
近期的工作中處理圖片合並時,碰到圖片來源跨域的情況,在此記錄。
圖片跨域處理
在用 canvas 合成圖片時,放在畫布里面的圖片,有些圖片源是另外一個域名,由於同源策略,首先需要在服務配置中添加對應的 Access-Control-Allow-Origin
,允許對應域名的請求。在這次處理過程中,還發現如果有用 CDN 進行加速,那么對應的 CDN 的配置也要添加這個請求頭。
此外在合成圖片的時候,要給對應的圖片添加 crossOrigin
屬性,否則會被認為污染了畫布,無法繼續合成。詳細可見文檔說明。
var img = new Image();
img.crossOrigin = "Anonymous";
img.src = '***';
img.onload = function() {}
最終合成圖片的處理,要在圖片加載完成的事件處理程序中才行,不然對應圖片不會出現在合成的圖片中。