关于被污染的canvas(tainted canvas)的问题

如果canvas中绘制了跨域请求到的图片,就被污染‘taint’了,这时不能再调用toBlob(), toDataURL()和getImageData()等方法, 否则会抛出安全错误(security error).

也就是说通过canvas无法获取其它域图片的内部信息。

This protects users from having private data exposed by using images to pull information from remote web sites without permission.

from: https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image

我不是很明白,这能解决什么安全隐患呢?

如果仅仅是一张图片,通过curl的方式或动态截屏的方式,很容易获取图片内容。
如果图片中保存了其它隐藏信息,如源代码 :) 也可以curl下来处理。

阅读 8.9k
2 个回答
新手上路,请多包涵

我今天也碰到了这个问题 你这个是涉及到跨域问题 它的安全提示是画布被污染了 解决怒方法 添加img.setAttibute('crossOrign','Anonymous')这个属性 然后把本地测试file 更改到服务器上测试http ok了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题