Проблема доступа к удаленному CSV с помощью dojo - PullRequest
3 голосов
/ 25 января 2009

Я пытаюсь создать веб-сайт, где я размещаю свои данные в электронных таблицах 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 работает нормально.

Из того, что мне сказали в моих поисках в 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

1 Ответ

4 голосов
/ 25 января 2009

Одинаковая политика происхождения .

Домен, используемый для доступа к странице, должен соответствовать запрашиваемому домену. Таким образом, вы не можете получить доступ к spreadsheets.google.com из другого места, используя только JavaScript.

Обходной путь, о котором я слышу больше всего, - это междоменный прокси - серверный скрипт, который получает (или POST) в другой домен и возвращает результаты обратно JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...