2011-11-28 68 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仍然存在類似的錯誤。 –