Three.js跨域問題
通過Three.js加載obj、FBX等格式外部模型文件的時候是ajax異步加載數(shù)據(jù)的過程,需要建立本地服務(wù)器來解決,如果不這樣直接使用瀏覽器打開加載三維模型的.html文件,會出現(xiàn)報錯無法模型文件無法加載,瀏覽器控制報錯跨域問題的情況。
瀏覽器控制臺報錯:
three.js:30833 Access to XMLHttpRequest at 'file://....' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
如果你有很好的前后端基礎(chǔ),肯定對跨域問題很了解,如果不了解也沒關(guān)系,下面會詳細(xì)說明如何解決。
解決方案
解決方案就是在本地自定義服務(wù)器,可以通過nodejs、python等任何一個你熟悉的語言來實(shí)現(xiàn)。
編輯器
如果不想麻煩在本地自定義服務(wù)器,也可以使用會自動幫助你建立本地服務(wù)器的一些代碼編輯器,比如常見的的atom、WebStorm等編輯器,當(dāng)然有些編輯器不會自動建立本地服務(wù)器,如果你不想更換不熟悉的代碼編輯器,那就需要后端語言自定義本地服務(wù)器。
Nodejs自定義服務(wù)器
如果你熟悉其它的后端語言直接使用你熟悉的后端語言自定義服務(wù)器就可以,如果不熟悉,可以選擇Nodejs。
如果你沒有前后端基礎(chǔ),剛開始學(xué)習(xí)Threejs可以不展開學(xué)習(xí)前端、后端知識,能夠調(diào)試three.js代碼就行。如果你想開發(fā)項(xiàng)目,前后端的知識還是要補(bǔ)充一些,如果不是專門的后端工程師也沒必要重新學(xué)習(xí)一門后端語言,直接使用Nodejs就行,Nodejs和前端一樣使用的是JavaScript語言。
使用Nodejs自定義服務(wù)器很簡單,首先是你要先百度Nodejs安裝的相關(guān)文章,先在你的電腦上安裝配置好Nodejs,熟悉下NPM的使用,然后使用npm執(zhí)行npm install http-server安裝http-server模塊,如果想創(chuàng)建創(chuàng)建一個自定義的服務(wù)器,打開命令行,在你要打開的html文件所在的目錄下,執(zhí)行http-server就可以完成服務(wù)器創(chuàng)建,具體不了解的可以百度相關(guān)內(nèi)容。
瀏覽器訪問http://localhost:8080或http://127.0.0.1:8080地址打開相應(yīng)的.html文件就可以顯示三維模型效果。
前端腳手架
剛開始學(xué)習(xí)three.js的時候,為了方便,可能不會使用一些前端框架,如果你實(shí)際開發(fā)項(xiàng)目的時候,可能會會把Three.js和Vue.js、React或AngularJs任何一種前端框架結(jié)合使用,這時候如果你使用這些前端框架的腳手架,比如VueJs的vue-cli腳手架,為了調(diào)試它本身就會創(chuàng)建本地服務(wù)器,這時候可以直接加載三維模型文件,不過注意不要把模型文件和html文件放在兩個不同的服務(wù)器地址下面。
相關(guān)文章
所謂的跨域(Cross-Origin):https://blog.csdn.net/u011037503/article/details/78025072