js加載文件跨域報錯cross origin requests...

本地Ajax跨域報錯Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

照着教程使用D3來加載 json文件和csv文件時,發現並不能成功加載,會報下面這樣的錯誤。
這裏寫圖片描述
因爲之前遇到過,大概知道原因在於使用了File協議,應該使用它提示的http, data, chrome, chrome-extension, https這些協議,可是隻是寫幾個小Demo,不至於自己去創建一個服務器,開個端口吧。經過各方檢索,發現瞭如下幾種解決方案。

1.換編輯器T_T

使用webstorm或是visual studio這種重量級的IDE的同學,應該不會遇到這種問題,這類IDE都內置了HTTP服務器。
但是對於博主這種喜歡VSCode,sublime這類輕量級編輯器的人,還是想找一下別的解決方案。

2.安裝Server插件: )

這裏針對VSCode和Sublime安利一款插件。

VSCode

Live Server插件,這個插件功能十分強大,不止可以解決ajax不支持file協議的問題,還可以實現在編輯器裏保存修改後,頁面自動刷新的功能。具體使用方法在插件安裝的地方有說明,用起來也十分簡單。
安裝完成之後,打開html文件後,點擊右下角的GoLive 即可。
這裏寫圖片描述

Sublime

SublimeServer插件,安裝完成之後,點擊Tools->SublimeServer->Start SublimeServer,啓動服務器,然後在html文件中,注意是文件中點擊右鍵,選擇 View in SublimeServer即可。
(注意一定要以文件夾的方式打開html文件所在目錄,否則可能失效。)
這裏寫圖片描述

3.換瀏覽器T_T

火狐支持file協議,對Chorme沒有什麼執念的童鞋,可以換成火狐。

4.配置Chrome瀏覽器支持file協議

對於想博主這樣很喜歡Chrome開發者工具的人,也可以嘗試這種方式。

Windows:
設置Chrome的快捷方式屬性,在“目標”後面加上–allow-file-access-from-files,注意前面有個空格,重新打開Chrome即可。

Mac:
打開終端,輸入下面命令:open -a “Google Chrome” –args –disable-web-security然後就可以屏蔽安全訪問了[ –args:此參數可有可無]

PS

只是更改瀏覽器配置使之支持file協議,還是有很大的侷限性的,建議最好採用前兩種方式,配置http服務器纔是長久之計~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章