Как Google JavaScript API обходит междоменную безопасность в AJAX? - PullRequest
12 голосов
/ 24 сентября 2008

Как API Google отправляет междоменные запросы обратно в Google, когда он находится на вашем сайте?

Ответы [ 5 ]

11 голосов
/ 24 сентября 2008

Они обходят это, динамически вставляя теги сценария в заголовок документа. Javascript, который отправляется с помощью этой инъекции, имеет функцию обратного вызова, которая сообщает скрипту, работающему на загруженной странице, и полезной нагрузке (данным).

Затем сценарий может удалить динамически внедренный тег сценария и продолжить.

4 голосов
/ 02 марта 2013

Принятый ответ неверен. Бен прав. Ниже приведен фактический узел iframe, извлеченный из страницы с помощью клиента JavaScript API Google .

<iframe name="oauth2relay678" id="oauth2relay678" 
        src="https://accounts.google.com/o/oauth2/postmessageRelay?
             parent=https%3A%2F%2Fwww.example.com.au#rpctoken=12345&amp;forcesecure=1" 
             style="width: 1px; height: 1px; position: absolute; left: -100px;">
</iframe>

Основные сведения о том, как это работает, приведены здесь: http://ternarylabs.com/2011/03/27/secure-cross-domain-iframe-communication/. В современных браузерах они используют HTML postMessage для достижения связи, а в старых браузерах они используют аккуратную комбинацию множественных iframe-urlhash-read + write-комбинации , Ternary Labs создали библиотеку , которая абстрагирует все взломанные вещи, по сути, предоставляя вам postMessage во всех браузерах.

Однажды я построю эту библиотеку поверх нее, чтобы упростить междоменные API REST ...

Edit: тот день настал, и XDomain здесь - https://github.com/jpillora/xdomain

1 голос
/ 24 сентября 2008

AFAIK они используют IFRAMEs.

0 голосов
/ 19 декабря 2013

Похоже, Google отображает карты, используя тег image Я предполагаю, что они используют библиотеку JavaScrit для обработки всех координат и других параметров, необходимых для src url, а затем вставляют теги image(вместе с миллионами других тегов) в вашу DOM.

Полная карта состоит из нескольких панелей, таких как HTML ниже:

image

(Вы можете вставить этот HTML-код на свою веб-страницу, чтобы увидеть результат)

Таким образом, Карты Google НЕ используют AJAX или что-либо еще для получения своих карт, просто простые изображения, созданные на лету. Так что не стоит беспокоиться о междоменных проблемах ...

0 голосов
/ 25 сентября 2008

Другой возможностью является использование транспорта window.name, как описано для каркаса dojo здесь

...