Canvas toDataURL()的跨源問題
儘管保證充分休息,但用戶在使用canvas.toDataURL()時可能會遇到安全異常。考慮以下程式碼:
var frame = document.getElementById("viewer");
frame.width = 100;
frame.height = 100;
var ctx = frame.getContext("2d");
var img = new Image();
img.src = "http://www.ansearch.com/images/interface/item/small/image.png"
img.onload = function() {
// Draw image
ctx.drawImage(img, 0, 0)
// Security exception occurs here:
window.open(frame.toDataURL("image/png"));
}
此程式碼嘗試在新視窗中以 Base64 資料形式開啟來自不同伺服器的映像,但會引發 SECURITY_ERR 異常。
根據規範,toDataURL() 方法如果畫布元素的 origin-clean 標誌設為 false,則會拋出 SECURITY_ERR 例外。當從不同的伺服器載入映像時,畫布會被污染,並且其 origin-clean 標誌設定為 false。
因此,無法直接使用 toDataURL() 取得源自下列位置的影像的 Base64 資料:不同的伺服器。可能需要使用 CORS 或代理等替代技術來處理跨源影像。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3