2011-11-28 64 views
2

这是在Chrome中工作,但不是在Firefox中。 Access-Control-Allow-Origin被设置为*,并且图像被设置为匿名的crossOrigin加载,但是当在Firefox中将图像绘制到画布上时,它们会污染画布。加载图像的代码如下: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 9.加入
+0

哪个版本的Firefox?这在最近的几个版本中进行了调整。 – AshleysBrain

+0

Firefox 8.我正在为将来构建一些东西,所以我想要在最新的Firefox上使用的答案。 –

回答

3

支持时启用CORS图像被粉刷它没有污点画布见https://bugzilla.mozilla.org/show_bug.cgi?id=685518

因此,如果你使用Firefox 8的测试,它不会工作。试试Firefox 9测试版?

+1

适用于Firefox 9.谢谢。 –

+0

这对于PNG和JPG来说是正确的,但对于SVG图像来说它们仍然会污染画布。 (我相信这是因为他们可以在其中包含外部对象) – brettlaforge

+0

@brettlaforge这在Firefox 10中是正确的,但是自从Firefox 11超过一年以前就已经修复了。请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=672013。不过,WebKit仍然存在类似的错误。 –