Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Способы получения данных в формате json со стороннего ресурса (https://javascript.ru/forum/misc/35077-sposoby-polucheniya-dannykh-v-formate-json-so-storonnego-resursa.html)

dmitry111 29.01.2013 22:17

Способы получения данных в формате json со стороннего ресурса
 
какие есть способы получения файла с данными json, расположенном на стороннем ресурсе?

dmitry111 29.01.2013 22:18

http://javascript.ru/ajax/cross-domain-scripting

Deff 30.01.2013 00:03

json и так кроссдоменно, коли он там есть

devote 30.01.2013 01:26

Цитата:

Сообщение от dmitry111
какие есть способы получения файла с данными json, расположенном на стороннем ресурсе?

JSONP

dmitry111 30.01.2013 03:17

спасибо!

Я вот не могу понять в чем уязвимость?

Например:
есть у меня данные, которые в файле list.json
Я не могу их свободно загрузить на сторонний ресурс (например запросить по ajax)

но я могу на стороннем ресурсе создать скрипт с абсолютно любым url

По сути вместо json, я могу создать на стороннем ресурсе скрипт на js внутри которого будет мой объект (который в list.json) ))

:blink:

JSON - это всего лишь данные - как картинка или файл, что в этом опасного?

Deff 30.01.2013 03:24

http://jquery-docs.ru/Ajax/jQuery.ge...rldatacallback
там имхо ток назывние функций разное

megaupload 30.01.2013 04:50

Цитата:

Сообщение от dmitry111
Я вот не могу понять в чем уязвимость?

ты заходишь на мой сайт, я отсылаю запрос на твой вконтактик, и отсылаю от твоего имени сообщения в скрытом айфрейме. ваш кэп.

Deff 30.01.2013 05:12

http://ru.wikipedia.org/wiki/JSON
http://ru.wikipedia.org/wiki/JSONP
Это лучше объяснит
По сути форматы близки, различается заголовками отправки на сервер
А так ограничение легко ломается

Цитата:

Заметим, что данный пример применения XMLHttpRequest не является универсальным для всех браузеров (для браузеров, основанных на Internet Explorer, Opera, Safari и Mozilla, в коде должны быть те или иные отличия). Возможности применения XMLHttpRequest ограничены из-за правила ограничения домена (same origin policy): URL ответа на запрос должен находиться в том же DNS домене, что и сервер, на котором находится страница, запрашивающая ответ. В качестве альтернативы применяется подход JSONP, включающий в себя использование закодированного вызова функции, передающегося между клиентом и сервером, чтобы клиент мог загружать закодированные в JSON данные со сторонних доменов, и уведомлять о завершении вызывающую сторону, хотя это приводит к некоторым рискам для безопасности и дополнительным требованиям к серверу.

Как вариант, в коде страницы можно использовать элементы <iframe> для асинхронного запроса JSON данных, или просто <form action="url_to_cgi_script" target="name_of_hidden_iframe"> . Эти подходы были распространены до появления широкой поддержки XMLHttpRequest.

Также можно использовать для передачи JSON-данных динамические теги <script>. С помощью этого метода можно обойти правило ограничения домена (same origin policy), но он приводит к появлению уязвимого кода. В качестве более безопасной альтернативы было предложено использовать JSONRequest.

dmitry111 30.01.2013 19:03

Понял как составляется строка с запросом на сервер, но куда адресован этот запрос?
К JSON файлу или к скрипту, который формирует json?

Deff 30.01.2013 20:25

Вот типо через яхо Трубу
<div id=Div1></div>
<script>
var query = 'select * from html where url="http://code.jquery.com/jquery-latest.js" and xpath="*"'
var url = 'http://query.yahooapis.com/v1/public/yql?q='+encodeURI(query)+'&format=xml&callback=callback';

document.body.appendChild(document.createElement('script')).src = url;

function callback(data) {
    //document.getElementById('Div1')= data.results[0];
alert(data.results[0])
}
</script>


Часовой пояс GMT +3, время: 02:26.