为什么这个toDataURL行出现安全错误?

dat*_*too 1 security html5 canvas

如果将来自其他站点的图像加载到页面,然后将其作为复合材料中的部分成分写入画布,则使用:

context.drawImage(image, 0, 0, w, h);
Run Code Online (Sandbox Code Playgroud)

看起来在画布的画面上已经发生了任何不安全的事情.那么为什么呢

window.location = canvas.toDataURL('image/png');
Run Code Online (Sandbox Code Playgroud)

提供错误消息.SECURITY_ERR; DOM异常18.它似乎没有比在其他地方首先保存外部站点映像的额外步骤更不安全.

我的问题不是如何绕过这个,这么多,或错误意味着什么,而是,

为什么这不安全?如果页面由服务器加载,则作者肯定会期望该操作.

ebi*_*del 5

根据规范,如果来自一个源的脚本可以从另一个源上的图像访问信息(例如,读取像素),则可能发生信息泄漏.令人担心的是,恶意应用程序可以通过加载来自另一个域/来源(轻松完成图像)和读取像素内容的图像来推断其无法访问的信息.XHR具有防护XD泄漏的保护措施.图像没有.