好的,我有一个页面在这个页面上有一个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来自另一个域(跨域),你只需要使用这个:

var currentUrl = document.referrer;

这里有主url!

其他回答

如果你的iframe来自另一个域(跨域),你只需要使用这个:

var currentUrl = document.referrer;

这里有主url!

我发现在$_SERVER['HTTP_REFERER']不工作的情况下(我在看你,Safari), $_SERVER['REDIRECT_SCRIPT_URI']一直是一个有用的备份。

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

我在这方面有问题。如果使用像php这样的语言,当你的页面第一次载入iframe时,抓取$_SERVER[' http_refererer ']并将其设置为一个会话变量。

这样,当页面在iframe中加载时,您就知道加载它的页面的完整父url和查询字符串。对于跨浏览器的安全性,依赖于窗口有点让人头疼。如果你有不同的域名,父级任何东西。

试一试:

document.referrer

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