問(wèn)題背景:需要從后臺(tái)拉取圖片并轉(zhuǎn)成base64,方案是將圖片繪制到canvas畫布,調(diào)用畫布的toDataURL方法得到圖片的base64
代碼如下:
運(yùn)行后發(fā)生以下錯(cuò)誤:
翻譯過(guò)來(lái)大概是橡淆,執(zhí)行toDataUrl失敗猜绣,被污染的畫布數(shù)據(jù)無(wú)法讀出
原因:
畫布上的圖片數(shù)據(jù)可以來(lái)源很多地方,如果跨域加載圖片驰坊,如果無(wú)法保證來(lái)源的安全性坞笙,會(huì)認(rèn)為畫布的數(shù)據(jù)認(rèn)為是污染的梅猿,不安全的鞋邑,無(wú)法從受污染的畫布讀出數(shù)據(jù)
解決方法:
給image設(shè)置跨域?qū)傩运写危嬖V瀏覽器從不同origin加載圖片資源