Three.js跨域問題(無法預(yù)覽)

Three.js跨域問題

通過Three.js加載obj、FBX等格式外部模型文件的時候是ajax異步加載數(shù)據(jù)的過程,需要建立本地服務(wù)器來解決,如果不這樣直接使用瀏覽器打開加載三維模型的.html文件,會出現(xiàn)報錯無法模型文件無法加載,瀏覽器控制報錯跨域問題的情況。

個人WebGL/Three.js技術(shù)博客

瀏覽器控制臺報錯:

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:8080http://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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容