背景:
您遇到错误“未捕获的安全错误:无法在“CanvasRenderingContext2D”上执行“getImageData”:在带有来自跨源 URL 的图像的画布上使用 .getImageData() 时,画布已被跨源数据污染。
问题:
出现“跨域”问题是因为图像的域与当前域不同。此安全措施可防止未经授权访问其他域的资源。
解决方案:
要解决此问题,您可以通过设置图像的 crossOrigin 来防止画布被污染属性设置为“匿名”:
var img = new Image(); img.crossOrigin = "Anonymous"; // Prevents tainting img.src = "https://cross-origin-image.example.com/image.jpg";
服务器端配置:
此外,托管图像的远程服务器必须设置以下标头:
Access-Control-Allow-Origin: *
此标头授予从任何来源访问图像的权限,允许将其加载到画布中而不污染它。
示例:
当使用“直接链接”选项时,Dropbox 文件选择器会设置适当的 crossOrigin 和 Access-Control-Allow-Origin 标头。这允许 JavaScript 代码从 Dropbox 检索图像并在不同域的画布中操作它们。
以上是以下是一些适合文章内容的基于问题的标题: * 如何修复在跨源图像中使用 `getImageData()` 时出现的'受污染的画布”错误? * 为什么我不能使用 `getImageD的详细内容。更多信息请关注PHP中文网其他相关文章!