有没有办法确定跨源图像是否会在不绘制的情况下污染 canvas?

Is there a way to determine if a cross-origin image would taint the canvas without painting it?

我正在编写允许用户输入图像的脚本 URL。我想将其绘制到 canvas - 但前提是 CORS 政策允许我这样做而不会污染 canvas。有没有一种直接的方法可以确定图像是否会污染 canvas 而无需先将其绘制到 canvas?

因为您已获得 URL,您可以简单地强制将 HTMLImageElement 的 crossOrigin 设置为 "anonymous"。如果图像加载,它不会污染你的 canvas*,如果它的错误事件被触发......你将无法绘制它。

*好吧,在一种情况下仍然可能发生这种情况:如果图像代表浏览器的其他安全威胁,例如 Safari 中带有 <foreignObject> 的 svg 图像。对于这些边缘情况,绘制 1x1 canvas 是唯一的了解方式。