Выполнение AJAX-вызовов изнутри iframe с другим доменом - PullRequest
0 голосов
/ 25 августа 2011

Можно ли выполнять вызовы AJAX изнутри iframe с другим источником домена?

Я пробовал внедрить скрипт, но он не работает, потому что источник iframe безопасен. Я сделал простую скрипку с сайтом California DMV здесь .

Я получаю DOM исключение 8 ошибка. Это проблема безопасности?

Ответы [ 2 ]

3 голосов
/ 25 августа 2011

Невозможно изменить или сделать вызовы JS в iframe с другим источником домена.Это ограничено во всех браузерах по соображениям безопасности.

См. " Одинаковая политика происхождения " для описания того, как работает межкадровая безопасность.В двух словах, из соображений безопасности очень мало связи между кадрами в другом домене.Вы не можете делать какие-либо прямые вызовы Javascript между фреймами в разных доменах.

Существует способ сделать междоменные вызовы ajax, и это включает использование JSONP .По сути, вы вставляете тег сценария в свой собственный фрейм, и этот тег сценария указывает на конечную точку сервера в любой точке сети.Поскольку значение src тега сценария не ограничено одной и той же политикой происхождения, вы можете связаться с этим сервером.Но теперь у вас должен быть способ вернуть этот результат.Это делается с помощью JSONP, где вы указываете в своем запросе к серверу функцию javascript, которую вы хотите, чтобы возвращаемый javascript вызывал.Этот возвращенный javascript может содержать данные javascript, которые затем передаются в нужную функцию.JSONP требует взаимодействия как клиентского кода, так и серверного кода, поскольку обычный вызов ajax может не поддерживать дополнительную часть JSONP.Но с этим взаимодействием обеих сторон вы можете обойти одну и ту же политику происхождения для конечных точек сервера, которые поддерживают JSONP.

HTML5 имеет новую систему обмена сообщениями, которая может безопасно передавать данные (не прямые вызовы JS) между взаимодействующими кадрамив разных доменах.См. здесь и здесь для описания того, как работает обмен сообщениями HTML5.

1 голос
/ 25 августа 2011

Да, это проблема безопасности из-за единой политики происхождения, применяемой большинством браузеров: http://en.wikipedia.org/wiki/Same_origin_policy.

Вы можете посмотреть JSONP http://niryariv.wordpress.com/2009/05/05/jsonp-quickly/, который специально разработан для обходаэто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...