|
|
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
Как я понял этот jsonp решает проблему cross-domain requests. Эта фраза чаще всего повторяется среди первых результатов поиска гугла. Объясните мне пожалуйста причём тут вызовы? json это формат хранения данных. откуда берутся вызовы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 14:54 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
redwhite90, форумом ошибся. Хотя мне самому интересно. Сейчас почитаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 14:56 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
В википедии же доступно расписано https://en.wikipedia.org/wiki/JSONP https://ru.wikipedia.org/wiki/JSONP Что такое AJAX знаешь? Что такое cross-domain requests знаешь? С JavaScript знаком? Ответы нужны чтобы понять, в какой форме тебе объяснять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 15:01 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
А ещё по теме стоит обратить внимание на CORS http://stackoverflow.com/a/12309651 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 15:02 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, wiki читал и также читал http://stackoverflow.com/questions/2067472/what-is-jsonp-all-about BlazkowiczЧто такое AJAX знаешь? для меня это когда из javascript-а делается http запрос и поле на страничке обновляется без перезагрузки страницы. BlazkowiczЧто такое cross-domain requests знаешь? Если честно, нет. BlazkowiczС JavaScript знаком? на уровне дизейбленья кнопочек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 15:15 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
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 методы и с какими заголовками можно посылать на этот сервер) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 15:30 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, авторОК. Браузер грузит HTML с некоторого домена myapplication.com. Но использовать ему нужно 3rd party сервис - myserviceprovider.com "ему" это домену или браузеру? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 15:39 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
redwhite90Blazkowicz, авторОК. Браузер грузит HTML с некоторого домена myapplication.com. Но использовать ему нужно 3rd party сервис - myserviceprovider.com "ему" это домену или браузеру? Браузер и HTML-ю. Домен это имя. Оно не може ничего "использовать". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 15:40 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, а для тех кто в танке поясните пожалуйста авторБраузер грузит HTML с некоторого домена myapplication.com. Но использовать ему нужно 3rd party сервис - myserviceprovider.com это как так может быть? для меня браузер шлёт серверу запрос, а сервер выплёвывает html. не вижу где тут может встроиться кто-то третий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 15:45 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
redwhite90для меня браузер шлёт серверу запрос, а сервер выплёвывает html. не вижу где тут может встроиться кто-то третий. Все началось давным давно. Придумали люди гапертекст. Это как бы книга - цитатник. Понадергает отовсюду и можно смело гулять туда-сюда. Потом решили добавить красивостей всяких. Картинок там и прочего. Потом решили, что еще бы неплохо каких-нибудь действий добавить - анимации там или кнопочек всяких. Но мы помним, что все это надергивалось ото всюду и от куда именно никто уже иногда и не знал. И все было ничего, пока кто-то умный не решил что это хорошо, а еще лучше если использовать это для систем всяческих. А то убоги они и плохо друг с другом стыкуются. А тут красота что хочешь куда хочешь и все живое такое ... И понеслось. Потом выяснилось, что если на страничке переданной сайтом A (банк) вдруг вклинится скриптик со сайта B, то кто-то может слегка спионерить деньги со счета не ставя никого в известность. И порешили тогда создатели браузеров - гипертекст это зло. И стали с ним бороться. Тут заткнут - он там вылезет. Они его в дверь, а он в окно. Ибо основа он бытия HTML'ного. Как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 16:05 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
redwhite90а для тех кто в танке поясните пожалуйста авторБраузер грузит HTML с некоторого домена myapplication.com. Но использовать ему нужно 3rd party сервис - myserviceprovider.com это как так может быть? для меня браузер шлёт серверу запрос, а сервер выплёвывает html. не вижу где тут может встроиться кто-то третий. браузер шлет запрос на сервер filehosting.com сервер возвращает HTML и JavaScript браузер начинать выполнять JavaScript JavaScript хочет послать AJAX запрос в services.google.com а браузер ему говорит - не-не-не, Дэвид Блейн. Тебе туда нельзя. Тебе можно только на filehosting.com слать запросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 16:10 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczТебе туда нельзя. Тебе можно только на filehosting.com слать запросы. Хорошо говорит скрипт - я тогда сделаю финт ушами и добавлю тег к документу, чтоб он, то что ответит google.com считал тоже скриптом и присвоил результат переменной. Хорошо говорит Google - добавлю ка я бесконечный цикл в конец json - ибо нефиг мои данные тырить на чужие странички. Ну и так до бесконечности... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 16:17 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
Например портал, который агрегирует 5 доменов организации и предоставляет единую точку взаимодействия. Слева у нас твои транзакции, взятые с finances.organization.com. Справа у тебя твоя информация по учетке с accounts.organization.com и тд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 17:15 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
спасибо, разобрался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 10:54 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
разобрался в чем была проблема)) Но до сих пор не понимаю как обертывание в Код: java 1. 2. 3. помогает её решить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 11:33 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
redwhite90Но до сих пор не понимаю как обертывание в Код: java 1. 2. 3. помогает её решить. Ограничение на обращение к определенном домену действует не везде. Например картинки, CSS, JavaScript, можно грузить с любого домена. А XMLHttpRequest, или IFRAME, нельзя. Поэтому JSONP использует дыру загружая JavaScript с другого домена с пареметром - имя callback функции. "Другой домен" генерирует специальный JavaScript динамечески, который реализует вызов callback функции, с JSON данными в качестве параметра этой функции. Браузер выполняет этот JavaScript стороннего домена и получается вызов функции с JSON данными, которые нам нужны. Спасибо, коллега, я теперь разобрался что такое JSONP. А то как-то руки не доходили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 11:42 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Рад, что чем-то помог))) Но марафон глупых(по всей видимости) вопросов не закончен) BlazkowiczПоэтому JSONP использует дыру загружая JavaScript с другого домена с пареметром - имя callback функции. что такое jsonp? такая вот конструкция: Код: java 1. 2. 3. как эта штука может что-то грузить? или эта конструкция есть продукт jsonp ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 12:07 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
redwhite90, Идея в том, что сначала Вы просите сервер обернуть свой Json Вашим вызовом. Если он на это согласен - значит считает, что Вам можно получать такую информацию. :) Если нет, то использовать чистый json для присвоения объекту в своем домене будет сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 12:14 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
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, которые мы получили из стороннего сервиса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 12:17 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
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 с данными с сервера. И тут ваша функция обновить таблицу на старнице новыми данными полученными с другого домена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 14:57 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
запрос <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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 15:05 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
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"})' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 15:09 |
|
||
|
JSONP. Зачем и почему?
|
|||
|---|---|---|---|
|
#18+
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 и видим как загрузился скрипт с чужого домена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 15:19 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38762157&tid=2126522]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
155ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 450ms |

| 0 / 0 |
