Доступ к родительскому URL из iframe - PullRequest
163 голосов
/ 06 августа 2010

Хорошо, у меня есть страница, и на этой странице у меня есть iframe. Что мне нужно сделать, это на странице iframe, узнать, что URL главной страницы.

Я искал и знаю, что это невозможно, если моя страница iframe находится в другом домене, так как это межсайтовый скриптинг. Но везде, где я читал, говорится, что если страница iframe находится в том же домене, что и родительская страница, она должна работать, например, если я это сделаю:

parent.document.location
parent.window.document.location
parent.window.location
parent.document.location.href

... или другие подобные комбинации, так как, кажется, есть несколько способов получить одну и ту же информацию.

В любом случае, вот в чем проблема. Мой iframe находится в том же домене, что и главная страница, но не в том же домене SUB. Так, например, у меня есть

http: // www.mysite.com/pageA.html

и тогда мой iframe URL будет

http: // qa-www.mysite.com/pageB.html

Когда я пытаюсь получить URL-адрес с pageB.html (страница iframe), я получаю ту же ошибку отказа в доступе. Таким образом, кажется, что даже субдомены считаются межсайтовыми сценариями, это правильно, или я что-то не так делаю?

Ответы [ 16 ]

1 голос
/ 23 апреля 2012

Проблема с PHP $ _SERVER ['HTTP_REFFERER'] заключается в том, что он дает полный URL-адрес страницы, которая привела вас на родительскую страницу.Это не то же самое, что родительская страница, сама по себе.Хуже того, иногда нет http_referer, потому что человек набрал URL-адрес родительской страницы.Поэтому, если я перейду к вашей родительской странице с сайта yahoo.com, сайт yahoo.com станет http_referer, а не вашей страницей.

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

Мне не удалось заставить работать предыдущее решение, но я обнаружил, что если я установлю iframe scr, например, http:otherdomain.com/page.htm?from=thisdomain.com/thisfolder, то смогу в экстракте iframe thisdomain.com/thisfolder, используя следующий javascript:

var myString = document.location.toString();
var mySplitResult = myString.split("=");
fromString = mySplitResult[1];
0 голосов
/ 15 мая 2019

Я знаю, что он очень старый, но это поражает меня, никто не рекомендовал просто передавать куки из одного домена в другой.Поскольку вы используете субдомены, вы можете делиться файлами cookie с базового домена на все субдомены, просто установив файлы cookie по URL-адресу .basedomain.com

Затем вы можете поделиться любыми данными, которые вам нужны, с помощью файлов cookie.

0 голосов
/ 05 сентября 2018

В хроме можно использовать location.ancestorOrigins Он вернет все родительские URL

0 голосов
/ 26 февраля 2018

Получить все родительские функции Iframe и HTML

var parent = $(window.frameElement).parent();
        //alert(parent+"TESTING");
        var parentElement=window.frameElement.parentElement.parentElement.parentElement.parentElement;
        var Ifram=parentElement.children;      
        var GetUframClass=Ifram[9].ownerDocument.activeElement.className;
        var Decision_URLLl=parentElement.ownerDocument.activeElement.contentDocument.URL;
0 голосов
/ 25 октября 2017

Это помогло мне получить доступ к URL-адресу iframe.

window.document.URL
...