1. 程式人生 > >【JavaScript:編譯錯誤】Image from origin 'file://' has been blocked from loading by Cross-Origin Resource

【JavaScript:編譯錯誤】Image from origin 'file://' has been blocked from loading by Cross-Origin Resource

問題描述:

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

中文翻譯:來自“file://”的影象已被跨源資源共享策略阻止載入:收到無效響應。 因此不允許原點'null'訪問。

 

當時直接用chrome瀏覽器開啟three.js中的example中的 .html檔案。【比如webgl_materials_texture_anisotropy.html】

正常的:

斷點:

three.js  中34444 行: var image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );

html中117行:var texture1 = textureLoader.load( "textures/crate.gif" );

html中124行:var texture2 = textureLoader.load( "textures/crate.gif" );

發現可能是“非同步載入”的原因,導致html中載入的函式都執行好一段時間後才報錯,並且除了部分沒顯示,其他內容都正常顯示了。

 

問題分析:

可能還是JavaScript限制了讀取本地檔案的問題。

 

解決方法:

  1、在chrome快捷方式中的屬性中新增上--allow-file-access-from-files 這個命令列引數。

  但是這個方法是不一定好,必須手動修改快捷方式的內容。

  不知道是否可以通過程式碼設定來處理。這樣不需要客戶都修改自己的瀏覽器引數。

  而且這個讀取本地檔案的方法是否會應生出其他不安全的隱患?