好的,我有一个页面在这个页面上有一个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

当我试图从pageB.html (iframe页面)抓取URL时,我一直得到相同的访问拒绝错误。因此,即使子域也可以算作跨站脚本,这是正确的,还是我做错了什么?


当前回答

我不能得到以前的解决方案的工作,但我发现,如果我设置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];

其他回答

在chrome中,可以使用location.祖宗起源 它将返回所有父url

PHP $_SERVER['HTTP_REFFERER']的问题是它给出了将您带到父页面的页面的完全限定页面url。这和父页面本身不一样。更糟糕的是,有时没有http_referer,因为用户输入了父页面的url。如果我从yahoo.com到你的父页面,yahoo.com就变成http_referer,而不是你的页面。

下面这行就可以了:document.location。ancestry origins[0]这个返回祖先域名。

获取所有父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;

试一试:

document.referrer

当你在iframe中更改时,你的主机是“referrer”。