Получение текущего URL-адреса src iframe в междоменном режиме

У меня есть iframe в моем веб-приложении, и мне нужно получить его текущий URL-адрес из родительского документа (также когда пользователь перемещается по фрейму и меняет исходный URL-адрес источника).

URL нужен просто для того, чтобы поделиться им в соцсетях.

В междоменном сценарии я не владею дочерним документом (это удаленный домен).

Мне известно о политике того же происхождения, которая предотвращает междоменный доступ от родительского документа к дочернему, но я ищу решение любым возможным творческим способом - должен быть способ обойти.


person Fallouturama    schedule 07.01.2012    source источник
comment
Подобный epascarello, он также просит способ без фреймов. Не все предложения кроссбраузерны, они работают некорректно, как сказал парень, и немного устарели.   -  person Fallouturama    schedule 07.01.2012
comment
Также он делает больший упор на решение на стороне сервера, я предпочитаю найти решение на стороне клиента.   -  person Fallouturama    schedule 07.01.2012
comment
Вы не можете получить URL-адрес, есть вещь, которая называется БЕЗОПАСНОСТЬ, которая предотвращает это. Если вы хотите быть социальным, вам нужно будет разработать плагин для браузера, который сможет обойти это. Кроме этого, вы не можете его прочитать.   -  person epascarello    schedule 07.01.2012
comment
Мне нужно быть социальным, иначе мой проект бессмысленен. Можно ли создать междоменный прокси, позволяющий родительскому документу получать URL-адрес через Javascript, а также сохранять пользовательскую навигацию внутри iframe, заставляя все URL-адреса проходить через прокси? что вы думаете о URL-адресах веб-страниц, манипулируемых Flash и Javascript .. Может ли этот прокси обрабатывать их?   -  person Fallouturama    schedule 10.01.2012
comment
Боюсь, плагины для браузера - это не вариант, мне нужно кроссбраузерное решение. Proxys был создан раньше, чтобы ускорять, фильтровать или каким-либо образом манипулировать пользовательскими данными. Браузеры Amazon Silk, Opera Mini и другие ранее использовали эту философию в веб-навигации. Почему пользователи не должны доверять моему сайту, если я объясню им условия использования юридически?   -  person Fallouturama    schedule 10.01.2012
comment
Нет, даже мендоцино не помогло.   -  person Fallouturama    schedule 20.11.2014
comment
Вы каким-либо образом контролируете содержание во фреймах? Можете ли вы вставить подключаемый модуль к содержимому во фреймах? Если это так, вы можете использовать window. postMessage (), чтобы отправить текущий URL-адрес обратно родительскому объекту.   -  person Alain Nisam    schedule 21.02.2016


Ответы (1)


Если вы не контролируете содержимое iFrame, то единственное решение - создать прокси, который вставляет следующую строку кода на каждую страницу.

window.postMessage(window.location,'*');

Затем на родительской странице вы можете прослушать сообщение.

window.addEventListener("message", receiveMessage, false);

function receiveMessage(event) {
  console.log(event.data);
}
person David Bradshaw    schedule 16.04.2016
comment
Если я использую прокси, то домен может быть таким же, как и сам мой сайт. Тогда я мог бы получить доступ к iframe, верно? - person feedc0de; 04.08.2017
comment
Это правильно - person David Bradshaw; 04.08.2017