錯誤現象:
下載了jQuery UI的插件Wijmo,然后在本地運行,但是Chrome瀏覽器無法顯示部分效果,無法加載部分文件(通過審查元素—>控制台查看),Firefox中顯示正常。
錯誤信息:
XMLHttpRequest cannot load file:///home/cf/IdeaProjects/fei/src/Wijmo-Pro.3.20131.7/Samples/WidgetExplorerMobile/samples/bubblechart/overview.html. Origin null is not allowed by Access-Control-Allow-Origin.
原因:
Chrome瀏覽器不支持本地ajax訪問,具體就是ajax不能訪問file這樣的,估計發布就可以了
解決辦法:
有以下3種解決辦法:
一、將整個目錄放到tomcat服務器的webapps目錄下,啟動tomcat服務器,瀏覽器中輸入localhost:8080/A/a.html(這種方法最簡單)
二、將html5的程序做成 chrome的擴展程序,該擴展程序的擴展文件名為.crx.
例如我想訪問A目錄下的a.html后發生錯誤,則進行如下操作(這種方法存在一個缺陷:每次更改html頁面內容后需要重新打包擴展程序):
1, 在程序根目錄(/A)下面增加一個manifest.json 文件:
文件格式為:
{
"name": "DemoApp",
"description": "Demo",
"version": "0.1",
"app": {
"launch": {
"local_path": "***.html"
}
},
"permissions": [
"unlimitedStorage"
]
}
2,將該程序利用chrome打包。打開chrome,在設置按鈕中選擇工具>擴展程序,或者在地址欄輸入chrome://extensions/. 如圖:
3,點擊擴展程序,開始打包html程序:
4.點擊瀏覽到/A目錄下,私有密鑰文件可忽略,打包擴展程序
5.彈出對話框打包成功,顯示A.crx所在位置。成功后,來到/A目錄的上一級目錄,可以看到A.crx文件。
將該文件直接拖拽到chrome瀏覽器中,在瀏覽器下部區域會彈出如下所示對話框,選擇繼續。
6.彈出對話框如下所示:點擊添加。
7.瀏覽器將自動打開一個新標簽頁,如下圖所示,點擊DemoApp的圖標
8.瀏覽器會出現如下圖所示錯誤信息:(此屬於正常)
9.這時在瀏覽器中輸入如上圖所示url。此處我輸入chrome-extension://bbbhibcamhjnikmjlibhinpkamoddnlh/a.html
即會顯示/A/a.html的內容信息,成功。
<!--[endif]-->
參考:http://www.iteye.com/topic/825714,里面是讓Chrome支持本地ajax訪問
三、修改chrome的屬性值。
此方法適應於任何系統,只是不同系統的操作方法不同,此處由於本人使用的linux系統,僅提供linux下操作方法。
首先,關閉chrome瀏覽器。
其次,打開終端terminal。
再次,輸入命令google-chrome --disable-web-security或者google-chrome --allow-file-access-from-files,將觸發系統重新啟動chrome瀏覽器,此時直接輸入file:///home/cf/A/a.html就可以看到正常顯示效果。
參考網址:
http://stackoverflow.com/questions/3102819/chrome-disable-same-origin-policy
希望能給同樣遇到此問題的朋友們起到一點幫助~^_^
本文出自 “飛翔的天空” 博客,請務必保留此出處http://frabbit2013.blog.51cto.com/1067958/1254285