2016-06-15 109 views
0

我在app.domain.com上有一個應用程序,我想從image1.domain.com,image2.domain.com等紋理加載一些圖像。THREE.js中的跨域圖像

我是使用此代碼:

var texture = new THREE.Texture(); 
var image = new Image(); 
image.crossOrigin = 'anonymous'; 
image.onload = function() { 
    texture.image = image; 
    texture.needsUpdate = true; 
    texture.minFilter = THREE.LinearFilter; 
}; 
image.src = url; 

在我的圖像響應頭我有Access-Control-Allow-Origin:app.domain.com但我仍然得到這個錯誤

three.js所201606101337:30942拋出:DOMException:未能執行 'texImage2D' 上 'WebGLRenderingContext' :url中的交叉源圖像可能不被加載。

+0

我猜你的意思是 「像** **響應頭」。 –

+0

是的,在響應標題 – Madalinul

+0

在你的問題中改變了你。 –

回答

1

爲什麼不使用Texture Loader?它可能處理一些邊緣情況:

var loader=new THREE.TextureLoader(); 
loader.setCrossOrigin("anonymous"); 
loader.load(
    url, 
    function do_something_with_texture(tex) { } 
); 

如果還是不行,請嘗試了變化的頭Access-Control-Allow-Origin: *

另外,請注意,CORS在Safari(OSX,iOS瀏覽器和webviews)中效果不佳。

+1

我得到了這個相同的錯誤。 – Madalinul

+0

請發佈圖片網址,我會檢查標題是否正確。 –

+0

好,所以問題是我需要一些餅乾,所以設置 image.crossOrigin ='use-credentials'; 做到了 – Madalinul

0

這對我的作品

var loader = new THREE.TextureLoader(); 
loader.setCrossOrigin(""); 
var map = textureLoader.load("image.png");