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

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

时间2025-09-19 07:09:22分类IT科技浏览7442
导读:最近在使用 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
android游戏开发教程(Android游戏开发学习路线)