Как Google JavaScript API обходит междоменную безопасность в AJAX?

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

5 ответов

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

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

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

<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...

Изменить: этот день наступил, и XDomain здесь - https://github.com/jpillora/xdomain

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

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

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

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

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

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

Другие вопросы по тегам