Одинаковая политика происхождения - AJAX и использование публичных API - PullRequest
23 голосов
/ 21 августа 2010

Я знаю, если на моей собственной веб-странице, если мой пользователь включен: http://www.example.com/form.php

и я делаю ajax-запрос с этой страницы: http://example.com/responder.php

Не удастся из-за одинаковой политики происхождения (поддомен другой).

Я пытаюсь понять, как AJAX-запросы могут извлекать данные из API, как flickr, когда запрос и сервер явно различаются.


Редактировать:

Например: почему этот код работает?

$.getJSON('http://api.flickr.com/services/rest/?&;method=flickr...'

( Ссылка на это вики сообщества ) Используется ли Cross Source Resource Sharing ?

Спасибо!

1 Ответ

17 голосов
/ 21 августа 2010

Существует несколько известных способов обойти ту же Политику происхождения.Одним из популярных методов является использование «инъекции тега скрипта», например, в JSONP .Поскольку тег <script> не ограничен одной и той же политикой происхождения, сценарий на стороннем домене может предоставлять исполняемый код, который взаимодействует с предоставленной функцией обратного вызова.Вы можете проверить раздел «Советы и хитрости» в следующей статье для дальнейшего чтения по теме:

Вы также можете быть заинтересованы в ознакомлении со следующим постом переполнения стека для дальнейшего ознакомления с другими методами работы в рамках той же политики происхождения:


ОБНОВЛЕНИЕ: Далее обновленный вопрос:

Цитирование из документации jQuery по $.getJSON():

Если URL содержит строку «callback =?»в URL запрос обрабатывается как JSONP.

...