【问题标题】:get URL of parent page inside when inside an iframe在 iframe 中获取父页面的 URL
【发布时间】:2011-02-22 17:48:45
【问题描述】:

我的主页 (index.php) 中有一个 iframe (iframe.php)。我想在 iframe 中回显主页的 URL。我知道如何回显任何页面的 URL,但当它在 iframe 内时不知道。当我尝试这个时,它只回显 iframe 的 URL,而不是主页的 URL。这听起来很简单,但无法弄清楚。

原因:我选择 php 的原因以及我尝试这样做的原因是,我需要验证访问此页面的 URL……不希望 iframe除非用户在 index.php 中才能访问,如果用户不在主页的 iframe 中,则拒绝用户访问。

【问题讨论】:

    标签: php javascript iframe


    【解决方案1】:

    你可以使用

    $_SERVER["HTTP_REFERER"]
    

    读取父级。

    它对我有用。

    javascript 代码无法与 PHP 轻松对话 ?from=

    【讨论】:

    • 请注意,$_SERVER["HTTP_REFERER"] 不安全,因为它被设置为浏览器。
    【解决方案2】:

    PHP 不知道 iframe,它只是作为另一个页面并由浏览器解释...

    你可以这样做......

    <iframe src="frame.php?from=<?php echo currentPageURL() ?>">
    

    然后在 iframe 里面,你可以访问$_GET['from']。只需确保您进行验证,因为那将是不安全的。

    这是我通常用来返回当前页面 URL 的代码:

    function currentPageURL() {
        $pageURL = 'http';
        if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
        $pageURL .= "://";
        if ($_SERVER["SERVER_PORT"] != "80") {
            $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
            } else {
            $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
        }
        return $pageURL;
    }
    

    【讨论】:

    • 感谢您的代码,我有这个想法,但问题是我将如何验证 _GET['from'] 中的内容?我的意思是人们可以在 frame.php 之后添加垃圾脚本,这可能会在任何程度上影响网站......除此之外,人们可以将 currentPageURL() 值直接输入到浏览器中,并且在 iframe 中 $_GET 值将读取它是正确的,并允许用户。
    • 嗯,就是这样......您尝试执行此操作的任何方法都将是易受攻击的。 Javascript 是客户端,因此很容易被欺骗。使用这种方法,您必须拥有某种允许存在的白名单。这是确保其安全的唯一方法。
    【解决方案3】:

    在 iframe 中试试这个:

    <script type="text/javascript">alert(top.location.href);</script>
    

    我认为它应该有效。 :-)

    【讨论】:

    • 关键字中有javascript所以我写了javascript代码。 :-)
    猜你喜欢
    • 2014-12-13
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 2012-10-13
    • 2015-02-18
    • 2013-07-25
    相关资源
    最近更新 更多