powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JSONP. Зачем и почему?
24 сообщений из 24, страница 1 из 1
JSONP. Зачем и почему?
    #38762108
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как я понял этот jsonp решает проблему cross-domain requests. Эта фраза чаще всего повторяется среди первых результатов поиска гугла.

Объясните мне пожалуйста причём тут вызовы? json это формат хранения данных. откуда берутся вызовы?
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38762115
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,

форумом ошибся. Хотя мне самому интересно. Сейчас почитаю.
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38762127
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В википедии же доступно расписано
https://en.wikipedia.org/wiki/JSONP
https://ru.wikipedia.org/wiki/JSONP

Что такое AJAX знаешь?
Что такое cross-domain requests знаешь?
С JavaScript знаком?

Ответы нужны чтобы понять, в какой форме тебе объяснять.
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38762129
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ещё по теме стоит обратить внимание на CORS
http://stackoverflow.com/a/12309651
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38762157
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

wiki читал и также читал http://stackoverflow.com/questions/2067472/what-is-jsonp-all-about

BlazkowiczЧто такое AJAX знаешь? для меня это когда из javascript-а делается http запрос и поле на страничке обновляется без перезагрузки страницы.

BlazkowiczЧто такое cross-domain requests знаешь? Если честно, нет.

BlazkowiczС JavaScript знаком? на уровне дизейбленья кнопочек.
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38762191
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90BlazkowiczЧто такое cross-domain requests знаешь? Если честно, нет.

ОК. Браузер грузит HTML с некоторого домена myapplication.com. Но использовать ему нужно 3rd party сервис - myserviceprovider.com
Браузеры запрещают запросы к другим доменам, потому что это не безопасно. (Ты зашел на страницу злоумышленника, а он через твой браузер послал запрос на сервер твоего банка и получил приватную информацию)
Точно так же, как и апплет. AJAX может слать запросы только на тот сервер с которого был загружен HTML.

Выходит, что надо как-то решить проблему, если HTML лежит на моём сервере, а использовать мне надо, например сервис Google.
Существует два решения
1) JSONP - хак, который исходит из того, что некоторые <script> HTML элемент может без особых ограничений использовать JS из другого домена.
2) CORS - который позволяет на доменах настраивать cross-domain requests более тонко (кому, какие HTTP методы и с какими заголовками можно посылать на этот сервер)
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38762213
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

авторОК. Браузер грузит HTML с некоторого домена myapplication.com. Но использовать ему нужно 3rd party сервис - myserviceprovider.com

"ему" это домену или браузеру?
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38762218
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Blazkowicz,

авторОК. Браузер грузит HTML с некоторого домена myapplication.com. Но использовать ему нужно 3rd party сервис - myserviceprovider.com

"ему" это домену или браузеру?
Браузер и HTML-ю. Домен это имя. Оно не може ничего "использовать".
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38762227
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

а для тех кто в танке поясните пожалуйста

авторБраузер грузит HTML с некоторого домена myapplication.com. Но использовать ему нужно 3rd party сервис - myserviceprovider.com

это как так может быть?


для меня браузер шлёт серверу запрос, а сервер выплёвывает html. не вижу где тут может встроиться кто-то третий.
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38762262
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90для меня браузер шлёт серверу запрос, а сервер выплёвывает html. не вижу где тут может встроиться кто-то третий.

Все началось давным давно.
Придумали люди гапертекст. Это как бы книга - цитатник. Понадергает отовсюду и можно смело гулять туда-сюда.
Потом решили добавить красивостей всяких. Картинок там и прочего.
Потом решили, что еще бы неплохо каких-нибудь действий добавить - анимации там или кнопочек всяких.
Но мы помним, что все это надергивалось ото всюду и от куда именно никто уже иногда и не знал.
И все было ничего, пока кто-то умный не решил что это хорошо, а еще лучше если использовать это для систем всяческих.
А то убоги они и плохо друг с другом стыкуются. А тут красота что хочешь куда хочешь и все живое такое ...
И понеслось.

Потом выяснилось, что если на страничке переданной сайтом A (банк) вдруг вклинится скриптик со сайта B, то кто-то может слегка спионерить деньги со счета не ставя никого в известность.

И порешили тогда создатели браузеров - гипертекст это зло. И стали с ним бороться. Тут заткнут - он там вылезет. Они его в дверь, а он в окно. Ибо основа он бытия HTML'ного.

Как-то так.
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38762275
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90а для тех кто в танке поясните пожалуйста
авторБраузер грузит HTML с некоторого домена myapplication.com. Но использовать ему нужно 3rd party сервис - myserviceprovider.com
это как так может быть?
для меня браузер шлёт серверу запрос, а сервер выплёвывает html. не вижу где тут может встроиться кто-то третий.

браузер шлет запрос на сервер filehosting.com
сервер возвращает HTML и JavaScript
браузер начинать выполнять JavaScript
JavaScript хочет послать AJAX запрос в services.google.com
а браузер ему говорит - не-не-не, Дэвид Блейн. Тебе туда нельзя. Тебе можно только на filehosting.com слать запросы.
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38762285
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczТебе туда нельзя. Тебе можно только на filehosting.com слать запросы.
Хорошо говорит скрипт - я тогда сделаю финт ушами и добавлю тег к документу, чтоб он, то что ответит google.com считал тоже скриптом и присвоил результат переменной.
Хорошо говорит Google - добавлю ка я бесконечный цикл в конец json - ибо нефиг мои данные тырить на чужие странички.

Ну и так до бесконечности...
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38762389
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например портал, который агрегирует 5 доменов организации и предоставляет единую точку взаимодействия. Слева у нас твои транзакции, взятые с finances.organization.com. Справа у тебя твоя информация по учетке с accounts.organization.com и тд.
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38762981
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, разобрался.
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38763049
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
разобрался в чем была проблема))


Но до сих пор не понимаю как обертывание в

Код: java
1.
2.
3.
callbackValue(
   старый добрый json
)



помогает её решить.
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38763068
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Но до сих пор не понимаю как обертывание в
Код: java
1.
2.
3.
callbackValue(
   старый добрый json
)


помогает её решить.

Ограничение на обращение к определенном домену действует не везде. Например картинки, CSS, JavaScript, можно грузить с любого домена. А XMLHttpRequest, или IFRAME, нельзя.
Поэтому JSONP использует дыру загружая JavaScript с другого домена с пареметром - имя callback функции.
"Другой домен" генерирует специальный JavaScript динамечески, который реализует вызов callback функции, с JSON данными в качестве параметра этой функции.
Браузер выполняет этот JavaScript стороннего домена и получается вызов функции с JSON данными, которые нам нужны.

Спасибо, коллега, я теперь разобрался что такое JSONP. А то как-то руки не доходили.
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38763114
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Рад, что чем-то помог)))

Но марафон глупых(по всей видимости) вопросов не закончен)

BlazkowiczПоэтому JSONP использует дыру загружая JavaScript с другого домена с пареметром - имя callback функции.
что такое jsonp?
такая вот конструкция:
Код: java
1.
2.
3.
callbackValue(
   старый добрый json
)



как эта штука может что-то грузить?

или эта конструкция есть продукт jsonp ?
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38763134
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,

Идея в том, что сначала Вы просите сервер обернуть свой Json Вашим вызовом.
Если он на это согласен - значит считает, что Вам можно получать такую информацию. :)
Если нет, то использовать чистый json для присвоения объекту в своем домене будет сложно.
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38763142
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90что такое jsonp?

Способ получения JSON данных в обход Same-origin policy.

redwhite90как эта штука может что-то грузить?
или эта конструкция есть продукт jsonp ?

Браузер динамически догружает JavaScript, добавля в HTML
<script src="anotherdomain.com/service?callback=myCallBackFunction"></script>
myCallBackFunction уже определена на странице.
anotherdomain генерирует JS код динамечески, соединяя имя функции и JSON данные
myCallBackFunction(JSONDATA)
браузер этот код начинает исполнять. в результате происходит вызов нашей myCallBackFunction с данными JSON, которые мы получили из стороннего сервиса
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38763378
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,

когда браузер грузит что то в script теге после загрузки он делает eval javascript а.

JSON в чистом виде не является правильным javascript. Если передать чистый JSON то при интерпретации JS, браузер выкинет ошибку поскольку браузер ожидает правильный javascirpt. Чтобы избежать этого json данные оборачивают в функцию .

обычно в url jsonp запроса указывают в каккую функцию обернуть данные.
Например

<script src=" http://somesers/apple/id/345/amount/45?callback=updateTableData></script>

то есть по url можно определить параменты id=245 и колво результатов 45 и куда обернуть данные функция callback.
сервер вернет

updateTableData({и здесь наши данные с сервера});

поскольку функция updateTableData уже существует на странице, то получив уже правильный JS браузер вызовет функцию updateTableData с данными с сервера. И тут ваша функция обновить таблицу на старнице новыми данными полученными с другого домена.
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38763398
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запрос <script src="someserver/id/45?callback=callme"><script>
ответ сервера '{"a":"hello"}'
браузер выдаст ошибку SyntaxError

запрос <script src="someserver/id/45?callback=callme"><script>
ответ сервера 'function callme({"a":"hello"})'
если функция callme определена на странице то получите вызов этой функции где в параметры она получит {"a":"hello"}
если функции нет на странице то браузер выдаст ошибку "callme" is not defined
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38763404
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingзапрос <script src="someserver/id/45?callback=callme"><script>
ответ сервера '{"a":"hello"}'
браузер выдаст ошибку SyntaxError

запрос <script src="someserver/id/45?callback=callme"><script>
ответ сервера 'function callme({"a":"hello"})'
если функция callme определена на странице то получите вызов этой функции где в параметры она получит {"a":"hello"}
если функции нет на странице то браузер выдаст ошибку "callme" is not defined

ошибка во втором случае
ответ сервера должен быть
'callme({"a":"hello"})'
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38763421
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Blazkowicz,

а для тех кто в танке поясните пожалуйста

авторБраузер грузит HTML с некоторого домена myapplication.com. Но использовать ему нужно 3rd party сервис - myserviceprovider.com

это как так может быть?


для меня браузер шлёт серверу запрос, а сервер выплёвывает html. не вижу где тут может встроиться кто-то третий.
прям счас читая sql.ru

открываем консоль ctrl shift i (или firebug)
активируем network panel
пишем в консоль

var script = document.createElement('script')
script.src='http://comments.apache.org/builder.js'
document.body.appendChild(script)
открываем network panel и видим как загрузился скрипт с чужого домена
...
Рейтинг: 0 / 0
JSONP. Зачем и почему?
    #38764486
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем спасибо за ответы. Понял всё)
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JSONP. Зачем и почему?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]