2017-06-15 106 views
0

我正在開發一個跨平臺(html5)項目,稍後在Android和iOS上啓動,我遇到了一個問題getJSON從本地加載.json文件中的數據在Chrome瀏覽器上。當調用getJSON在chrome上本地加載json數據文件時出錯

jQuery.getJSON("layout.json", this.onLoaded); 

我得到

Error: XMLHttpRequest cannot load file:///E:/app/layout.json. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https`

在jQuery的3.2.1.js:9566這就是:xhr.send(options.hasContent && options.data || null);

我已經過互聯網尋找解決方案,並與這些想出了兩種解決方案不適用於我的情況:

  1. 在chrome上手動啓用訪問控制允許來源
  2. 上傳服務器

我正在尋找一個解決方案在本地加載JSON數據的項目文件。

非常感謝您的幫助!

+0

請從您的項目中添加一些代碼示例以獲得幫助。 – arturkin

+0

1.使用'HBuilder'這個eclipse克隆IDE並在本地Web服務器中自動查看本地文件或2.在生產環境中使用JSON文件並將其更改回 –

+0

@arturkin這裏是代碼示例和錯誤我得到了: jQuery.getJSON(「layout.json」,this.onLoaded); 錯誤: XMLHttpRequest無法加載file:/// E:/app/layout.json。協議方案僅支持跨源請求:http,data,chrome,chrome-extension,https。 jquery-3.2.1.js:9566這就是:xhr.send(options.hasContent && options.data || null); – Mahmoud

回答

1

這個Chrome擴展幫助我在Chrome同樣的問題,檢查出來允許-控制允許來源:*

+0

謝謝jNg。是的,這工作正常,但我在跨平臺項目上工作,所以在這種情況下是否有替代方案?我可以允許使用JavaScript的Chrome瀏覽器政策嗎? – Mahmoud

+0

我不能說,但我會做一些研究 – Jonathan

1

我不認爲有一個跨瀏覽器的解決方案,因爲它是一個安全措施保護用戶的數據和瀏覽器的verndors實際上阻止這個意圖。在Chrome中,您可以在啓動時使用--allow-file-access-from-files選項,但這不是普通用戶可以接受的,也有(某些情況下)無法限制某些文件的偏好,因此會再次導致安全問題。

不過,如果你創建一個本地服務器,把你想載入這是加載服務器上的文件的頁面文件,這成爲可能。這是非常可行的,有很多本地服務器適用於Android,可能適用於其他操作系統。

PS您還可以創建瀏覽器擴展。由於現在許多瀏覽器都支持Chromium擴展(Opera,Vivaldi,Yandex等),甚至FireFox,它可能是一個有趣的選擇。但是你必須學習擴展的確切限制,我不是這方面的專家。