3

Googleスプレッドシートでデータをホストし、dojoを使用してブラウザーでユーザーにデータを表示するWebサイトを作成しようとしています。

ただし、エラーが発生しています

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のローカルに保存されたコピーに置き換えると、正常に機能します。

Google 検索でわかったことによると、これは、クロスサイト スクリプティング攻撃からユーザーを保護しようとする最新のブラウザーのセキュリティ制限によるものです。もちろん、私のページのためにこのドメインを「ホワイトリスト」に登録できるようにしたいと考えています。

助言がありますか?

完全な 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

1 に答える 1

4

同じオリジン ポリシー

ページへのアクセスに使用するドメインは、要求されたドメインと一致する必要があります。そのため、JavaScript のみを使用して他の場所から Spreadsheets.google.com にアクセスすることはできません。

私がよく耳にする回避策は、クロスドメイン プロキシです。これは、別のドメインに GET (または POST) し、結果を JavaScript にエコー バックするサーバー側スクリプトです。

于 2009-01-25T02:26:06.077 に答える