我正在尝试创建一个网站,用于在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>
提前致谢, 的Animesh
答案 0 :(得分:4)
用于访问该页面的域必须与请求的域匹配。因此,您无法仅使用JavaScript从其他位置访问spreadsheets.google.com。
我最常听到的解决方法是cross-domain proxy - 一个服务器端脚本,可以对另一个域进行GET(或POST)并将结果回显给JavaScript。