首页IT科技failed to execute goal org(Failed to execute ‘getImageData’ on ‘CanvasRenderingContext2D’ 问题解决方法)

failed to execute goal org(Failed to execute ‘getImageData’ on ‘CanvasRenderingContext2D’ 问题解决方法)

时间2025-08-05 03:47:51分类IT科技浏览6783
导读:最近在使用 Canvas 时,遇到了跨域问题。本文介绍如何解决这类跨域问题。...

最近在使用 Canvas 时               ,遇到了跨域问题                。本文介绍如何解决这类跨域问题                       。

具体的错误信息如下:

Uncaught DOMException: Failed to execute ‘getImageData’ on ‘CanvasRenderingContext2D: The canvas has been tainted by cross-origin data.

对于跨域的图片                        ,只要能够在网页中正常显示出来        ,就可以使用canvas的drawImage() API绘制出来        。但是如果你想更进一步           ,通过getImageData()方法获取图片的完整的像素信息                        ,则多半会出错            。

那有没有什么办法可以解决这个问题呢?

在HTML5中            ,有些元素提供了支持CORS(Cross-Origin Resource Sharing)(跨域资源共享)的属性       ,这些元素包括<img>                       ,<video>                ,<script>等    ,而提供的属性名就是crossOrigin属性                       。

因此                       ,上面的跨域问题可以这么处理:

增加一个img.crossOrigin = 即可                    ,虽然JS代码这里设置的是空字符串,实际上起作用的属性值是anonymous            。

crossOrigin可以有下面两个值:

anonymous:元素的跨域资源请求不需要凭证标志设置        。

use-credentials:元素的跨域资源请求需要凭证标志设置                   ,意味着该请求需要提供凭证                       。

其中                        ,只要crossOrigin的属性值不是use-credentials    ,全部都会解析为anonymous               ,包括空字符串                        ,包括类似xttblog这样的字符               。

另外还有一点需要注意        ,那就是虽然没有crossOrigin属性           ,和设置crossOrigin="use-credentials"在默认情况下都会报跨域出错                        ,但是性质上却不一样            ,两者有较大区别    。

IE11+       ,Safari                       ,Chrome                ,Firefox浏览器均支持    ,IE9和IE10会报SecurityError安全错误                        。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
css声明总是以什么结束(使用CSS实现《声生不息》节目Logo)