`

Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tai

    博客分类:
  • js
阅读更多

Js Canvas画图加载远程连接报错:

Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.

 

报错Screenshot

尽管没有CORS授权也可以在 canvas 中使用图像, 但这样做就会污染(taints)画布。 只要 canvas 被污染, 就不能再从画布中提取数据, 也就是说不能再调用 toBlob()toDataURL() 和 getImageData() 等方法, 否则会抛出安全错误(security error).

这实际上是为了保护用户的个人信息,避免未经许可就从远程web站点加载用户的图像信息,造成隐私泄漏。

 

代码实例:

var canvas = window.document.createElement('canvas');
var ctx = canvas.getContext('2d');

var image = new Image();
image.src = 'xxxx?7c44414156d579012ee2c9845b276e3e';
image.onload = () => {
  canvas.width = 500;
  canvas.height = 500;
  ctx.drawImage(image, 0, 0, 500, 500);
  var imgSrc = canvas.toDataURL('image/png', 1);
  console.log(imgSrc);
}

/* VM1604:10 Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.
    at Image.image.onload (<anonymous>:10:23) */

 

 

解决方案:

  1. 允许远程服务器Access-Control-Allow-Origin开启跨域
  2. 图片服务放在同一台服务器
  • 大小: 18.1 KB
分享到:
评论

相关推荐

    详解canvas.toDataURL()报错的解决方案全都在这了

    Uncaught DOMException: Failed to execute ‘toDataURL’ on ‘HTMLCanvasElement’: Tainted canvases may not be exported. 关键词 canvas.toDataURL() crossOrigin Access-Control-Allow-Origin 前言 最近在...

    利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解

    将图片转为base64的好处 将图片转换为Base64编码,可以让你很方便地在没有上传文件的条件下将图片插入其它的网页、编辑器中。 这对于一些小的图片是极为方便的,因为你不需要再去寻找一个保存图片的地方。...

    解锁canvas导出图片跨域的N种姿势小结

    Uncaught DOMException: Failed to execute ‘toDataURL’ on ‘HTMLCanvasElement’: Tainted canvases may not be exported. 上面这个错误相信大家用canvas执行 toDataUrl导出图片的时候都遇到过,图片服务器域名...

    使用js下载pdf所需js资源(html2canvas 和 jsPDF)

    这个库的核心功能是将DOM结构转化为可绘制的图像,从而可以进一步处理或保存。它的主要用途包括屏幕截图、生成图片以及在本例中,将HTML内容转换为PDF的基础。 `jsPDF` 是一个轻量级的JavaScript库,用于生成PDF...

    使用canvas对多图片拼合并导出图片的方法

    然而,当遇到"Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted Canvases may not be exported."错误时,这通常意味着尽管设置了`crossOrigin`,但服务器并未响应正确的CORS...

Global site tag (gtag.js) - Google Analytics