2009-01-25 21 views
3

我想創建一個網站,我在Google電子表格中託管我的數據,並在使用dojo的瀏覽器中向用戶顯示數據。使用dojo訪問遠程CSV的問題

不過,我得到錯誤

Access to restricted URI denied" code: "1012 

當瀏覽器遇到:

var stateStore = new dojox.data.CsvStore(
{url: "http://spreadsheets.google.com/pub?key=p0jvMlPF5YqcUllrbwZzQBg&output=csv&gid=0", 
label: "name"}); 

同時與同一CSV的本地存儲拷貝替換它工作正常。

從我的谷歌搜索告訴我,這是由於現代瀏覽器的安全限制,它試圖保護您免受跨站點腳本攻擊。當然,我希望某種方式能夠將該域名「白名單」用於我的頁面。

有什麼建議嗎?

完整的HTML代碼是提前

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <style type="text/css"> 
     @import "dojo-release-1.2.3/dijit/themes/tundra/tundra.css"; 
     @import "dojo-release-1.2.3/dojo/resources/dojo.css" 
    </style> 
    <script type="text/javascript" src="dojo-release-1.2.3/dojo/dojo.js" 
     djConfig="parseOnLoad:true, isDebug: true"></script> 
    <script> 
     dojo.require("dojox.data.CsvStore"); 
     dojo.require("dijit.Tree"); 
     dojo.require("dojo.parser"); 
    </script> 
    <script type="text/javascript"> 
     var stateStore = new dojox.data.CsvStore({url: "http://spreadsheets.google.com/pub?key=p0jvMlPF5YqcUllrbwZzQBg&output=csv&gid=0", label: "name"}); 
//  var stateStore = new dojox.data.CsvStore({url: "states.csv", label: "name"}); 
    </script> 


</head> 
<body class="tundra"> 
<!-- <div dojoType="dojox.data.CsvStore" url="http://spreadsheets.google.com/pub?key=p0jvMlPF5YqcUllrbwZzQBg&output=csv&gid=0" jsid="stateStore" /> --> 
    <div dojoType="dijit.Tree" store="stateStore" labelAttr="name" label="States"></div> 
</body> 
</html> 

感謝, 的Animesh

回答

4

Same origin policy

用於訪問頁面的域必須與請求的域匹配。因此,您無法單獨使用JavaScript從其他地方訪問spreadsheets.google.com。

我最常聽到的解決方法是cross-domain proxy - 一個服務器端腳本,它可以將GET(或POST)到另一個域,並將結果回顯給JavaScript。