3

我正在尝试创建一个网站,在其中将我的数据托管在 google 电子表格上,并使用 dojo 在其浏览器中向用户显示数据。

但是,我收到了错误

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>

提前致谢,

4

1 回答 1

4

同源政策

用于访问页面的域必须与请求的域匹配。因此,您无法仅使用 JavaScript 从其他地方访问电子表格.google.com。

我听到最多的解决方法是跨域代理——一个服务器端脚本,它获取(或发布)到另一个域并将结果回显到 JavaScript。

于 2009-01-25T02:26:06.077 回答