2011-09-02 66 views
1

如果从其他网站上的图片,加载到页面,然后在复合写入到画布作为部分成分,使用:为什么这会给DataURL行一个安全错误?

context.drawImage(image, 0, 0, w, h); 

它似乎什么不安全就已经发生了抽奖画布。 为什么然后

window.location = canvas.toDataURL('image/png'); 

提出了一条错误消息。 SECURITY_ERR; DOM异常18.它不是似乎更不安全比额外的步骤首先在其他地方保存外部站点图像。

我的问题不是如何来解决这个问题,这么多,还是什么错误意味着,而是

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

+0

您是否正在从文件系统加载网页?如果是这样,一些条件似乎从实际的网站没有本地文件系统中触发异常18:http://stackoverflow.com/questions/2704929/uncaught-error-security-err-dom-exception-18 。 – jfriend00

+0

我确实遇到过这种情况,但即使在本地主机上运行(正如我在同一链接中看到的一样),我仍然会得到与外部图像url相同的异常。 – datatoo

回答

5

作为每spec,可发生信息泄漏如果从一个来源的脚本可以访问的信息(例如读像素)从另一来源的图像。担心的是恶意应用程序可能通过加载来自其他域/来源的图像(轻松完成图像)并读取像素内容,从而推断出本来无法访问的信息。 XHR已经建立了防止XD泄漏的保护措施。图像不。

+0

谢谢,非常丰富的链接。+ 1 – datatoo

+0

绝对正确。提及使用来自另一个域的任何图像绘制的画布被认为是“脏的”,其中画布的原始干净标志为假是很有帮助的。动态绘制的画布只包含来自同一个域的图像,被归类为“干净”画布。 –