2015-11-13 44 views
-1

這讓我感到非常緊張。我正試圖讓我的天空盒與從互聯網上獲得的圖像一起工作。我的代碼:加載天空盒的圖像的跨域問題

爲全局變量:

var path = "file:///C:/Users/Tyler/Desktop/ComS_336_workspace/"; 
    var imageNames = [ 
         path + "meadow_bk.jpg", 
         path + "meadow_ft.jpg", 
         path + "meadow_up.jpg", 
         path + "meadow_dn.jpg", 
         path + "meadow_rt.jpg", 
         path + "meadow_lf.jpg" 
         ]; 

在主要功能:

// load the six images 
     //THREE.ImageUtils.crossOrigin = "Anonymous"; 
     var ourCubeMap = THREE.ImageUtils.loadTextureCube(imageNames); 

但得到這個錯誤:

DOMException: Failed to execute 'texImage2D' on 'WebGLRenderingContext': The cross-origin image at file:///C:/Users/Tyler/Desktop/ComS_336_workspace/meadow_ft.jpg may not be loaded. 

當我加入THREE.ImageUtils .crossOrigin =「匿名」;我得到這個錯誤:

Image from origin 'file://' has been blocked from loading by Cross-Origin Resource Sharing policy: Invalid response. Origin 'null' is therefore not allowed access. 

我看到一些帖子說要與運行鉻--allow-文件存取的檔案或什麼,但不想冒險任何安全問題。然後,我看到別人說把圖像放在網絡服務器上?這我完全不知道該怎麼做,爲什麼這一點很複雜?

我的HTML和JS文件是在同一文件夾(ComS_336_workspace)作爲我的圖片。

,我真的很需要做什麼幫助,如果我必須做一個網絡服務器,我怎麼把我的圖片上他們和路徑設置爲我的圖片?我沒有得到。

+0

「我真的很需要做什麼幫助」 - 你已經說過你必須做的:主機您的Web站點的Web服務器上。 – Quentin

+0

「我必須做一個網絡服務器,我如何把他們的圖像放在他們身上,併爲我的圖像設置路徑?」 - 選擇一個Web服務器。安裝它。按照其說明操作。 – Quentin

回答

0

爲了解決這個問題,你需要或者遠程文件保存到您的網站或使用一些代理腳本,從您的網站(例如PHP)通過你的網站獲得的圖像。

反正你需要一個fully qualified domain name擺脫兼容CORS-錯誤。從file:///載入webgl和圖像將不起作用。

+0

任何有關投票正確答案的評論? – kaigorodov

0

你用什麼來編輯你的代碼?如果您嘗試從臺式機上運行該頁面進行測試,那麼我會推薦brackets.io

它的偉大,自由,將讓你周圍的CORS問題,爲你打造你的代碼了。