Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Подключение скрипта с другого домена (https://javascript.ru/forum/events/42105-podklyuchenie-skripta-s-drugogo-domena.html)

Mikee 12.10.2013 23:11

Подключение скрипта с другого домена
 
Все вы наверное слышали про same-origin policy.
Вот и я слышал, и думал, что загрузив скрипт с другого домена при помощи <script src="... нельзя получить доступа к документу, в котором было сделано это подключение.

Но все таки я решил проверить. И каково было мое удивление, когда я не обнаружил никакого ограничения. Ни в одном браузере, в котором я тестировал. Посмотрите сами.

Документ http://lingcom.ru/i.htm, который подключает скрипт http://http11.ru/j.js с другого домена.
Для чистоты эксперимента я даже разместил эти файлы на разных хостингах, так что отличаются даже IP.

Надо кликнуть на ссылку или отправить форму (можно даже кликнуть справа от формы) и вы увидите alert() с соответствующими данными.

Содержимое скрипта тривиально. Я регистрирую куда ушел посетитель, если он сделал это посредством ссылки или отправки формы. Я вешаю обработчик события на весь документ и отлавливаю клики, читая href. Так же я вешаю обработчик события на все формы и отлавливаю onsubmit, читая параметры method и action.
document.onclick = event_target;
// в IE событие onsubmit не всплывает
for ( var i = 0; i < document.forms.length; ++i )
	document.forms[i].onsubmit = event_target;

function event_target( e )
{
	if ( e ) var target = e.target;
	else var target = window.event.srcElement;

	if ( typeof target.action != 'undefined' ) alert( target.method +':'+ target.action );
	else if ( typeof target.href != 'undefined' ) alert( target.href );
}

В чем дело? А как же same-origin policy?

Deff 12.10.2013 23:50

Mikee,
Чот вы слышали звон, но не про то
Нельзя получить доступ к контенту с иного домена с текущего
скрипты и стили css(к примеруот гугла) - часто загружают с того же гугла на сайт
Скрипт и css запросто получают доступ к контенту текущего сайта...


Часовой пояс GMT +3, время: 01:30.