【问题标题】:Firefox Cross Domain images are taintedFirefox 跨域图像被污染
【发布时间】:2012-01-08 03:08:38
【问题描述】:

这在 Chrome 中有效,但在 Firefox 中无效。 Access-Control-Allow-Origin 设置为 *,并且加载图像时将 crossOrigin 设置为匿名,但是当在 Firefox 中将图像绘制到画布上时,它们会污染画布。加载图片的代码如下:

var image = new Image();
image.onload = loadCallback;
image.crossOrigin = "anonymous";
image.src = imageSrc;

几个问题:

  1. 我是否缺少某些特定于 Firefox 的内容?它是否需要比 Access-Control-Allow-Origin 更多的标头?
  2. 有什么方法可以从加载的图像中确定它被污染(对调试很有用)。
  3. 服务器的域名是相同的,它们只是不同的子域(即 images.example.com 和 mysite.example.com),有什么方法可以利用这一点,或者我真的应该有代理吗准备好做一个 passthru 并且忘记处理 CORS 问题了吗?

【问题讨论】:

  • Firefox 的哪个版本?这已在最近的几个版本中进行了调整。
  • Firefox 8。我正在为未来构建一些东西,所以我想要在最新的 Firefox 上工作的答案。

标签: javascript firefox canvas cross-domain cors


【解决方案1】:

在 Firefox 9 中添加了在绘制启用 CORS 的图像时不污染画布的支持。请参阅 https://bugzilla.mozilla.org/show_bug.cgi?id=685518

因此,如果您使用 Firefox 8 进行测试,它将无法正常工作。试试 Firefox 9 测试版?

【讨论】:

  • 这适用于 PNG 和 JPG,但不适用于 SVG 图像,它们仍然会污染画布。 (我相信是因为它们内部可以包含异物)
  • @brettlaforge 在 Firefox 10 中确实如此,但在一年多前的 Firefox 11 中已修复。见bugzilla.mozilla.org/show_bug.cgi?id=672013。不过,WebKit 仍然存在类似的错误。
猜你喜欢
  • 1970-01-01
  • 2012-11-20
  • 1970-01-01
  • 1970-01-01
  • 2020-01-03
  • 2013-02-07
  • 2013-11-22
相关资源
最近更新 更多