我正在尝试创建一个网站,将我的数据托管在 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>
提前致谢, 动画片
最佳答案
用于访问页面的域必须与请求的域匹配。因此,您无法仅使用 JavaScript 从其他地方访问 spreadsheets.google.com。
我听到最多的解决方法是 cross-domain proxy -- GET(或 POST)到另一个域并将结果回显给 JavaScript 的服务器端脚本。
关于javascript - 使用 dojo 访问远程 CSV 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/477053/