有没有办法确定跨源图像是否会在不绘制的情况下污染 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 是唯一的了解方式。
我正在编写允许用户输入图像的脚本 URL。我想将其绘制到 canvas - 但前提是 CORS 政策允许我这样做而不会污染 canvas。有没有一种直接的方法可以确定图像是否会污染 canvas 而无需先将其绘制到 canvas?
因为您已获得 URL,您可以简单地强制将 HTMLImageElement 的 crossOrigin
设置为 "anonymous"
。如果图像加载,它不会污染你的 canvas*,如果它的错误事件被触发......你将无法绘制它。
*好吧,在一种情况下仍然可能发生这种情况:如果图像代表浏览器的其他安全威胁,例如 Safari 中带有 <foreignObject>
的 svg 图像。对于这些边缘情况,绘制 1x1 canvas 是唯一的了解方式。