javascript - 使用 dojo 访问远程 CSV 时出现问题

标签 javascript dojo xss

我正在尝试创建一个网站,将我的数据托管在 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>

提前致谢, 动画片

最佳答案

Same origin policy .

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

我听到最多的解决方法是 cross-domain proxy -- GET(或 POST)到另一个域并将结果回显给 JavaScript 的服务器端脚本。

关于javascript - 使用 dojo 访问远程 CSV 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/477053/

相关文章:

ide - 使用 PHPStorm for Dojo 完成代码(特别是 dojo.require)

php - 用户提交代码演示区的安全预防措施和技术

html - 没有 &lt;meta chartset=<<"any-encoding">>/> 标签的安全漏洞?

javascript - 淡化滚动条上的粘性 div

javascript - 应用程序需要刷新才能初始化

dojo - 在使用自定义 dojo 构建时,如何让 dojo.currency.format 使用正确的货币符号?

php - 将 session token 或随机数用于跨站点请求伪造保护 (CSRF)?

javascript - 用于 WebGL 开发的 GLGE、SceneJS 或 WebGLU?

javascript - 使用 JavaScript 读取本地 JSON 文件(无网络服务器)

javascript - 在 JavaScript 代码中传递新参数以定位 HTML 属性