【问题标题】:Getting URL from a child iframe从子 iframe 获取 URL
【发布时间】:2011-04-30 23:54:47
【问题描述】:

是否 100% 不可能从加载到单独域的 iframe 的 iframe html 获取浏览器 URL?我尝试了javascript,但没有用。我可以用什么语言做到这一点?谢谢!

更新 谢谢您的帮助! PHP 确实有效。

<?php 
if(isset($_SERVER['HTTP_REFERER'])) 
{
    echo $_SERVER['HTTP_REFERER'];
}?>

【问题讨论】:

    标签: javascript url browser


    【解决方案1】:

    只需使用此 JavaScript 来检测您的页面是否在框架或 iframe 内:

    <script>
        if(top.frames.length > 0)
        {
           // do something like this to kill the iframe
           top.location = "http://mysite.com";
        }
    </script>
    

    【讨论】:

    • 谢谢 - 我不想杀死我所在的框架,只是知道它在什么位置,以便我们可以跟踪它并处理我们内容的安全性。感谢您的回复。
    【解决方案2】:

    一旦用户在与主文档位于不同域的 iframe 中导航后,您将无法访问 iframe 中有关该新文档的任何信息。这是为了防止 XSS 攻击,不能“变通”

    【讨论】:

      【解决方案3】:

      如果您要问的是是否可以通过 Javascript 在iframe 中获取托管您页面的浏览器的 URL,那么答案是否定的;您无法在正确编写的网络浏览器中执行此操作。如果iframe 可以监视托管它的任何东西,那么就可以做各种恶意的事情。

      您可以做的是从您的服务器端代码查看托管页面请求中的引荐来源 HTTP 标头。这应该设置为嵌入您的页面的页面的 URL。

      【讨论】:

        【解决方案4】:

        您可以获得 iframe 设置为的初始 src 属性。

         alert(document.getElementById("iframeID").src);
        

        JSFiddle

        但是,如果将内嵌文档导航到另一个页面,您肯定无法获取新地址。

        【讨论】:

        • 这将获取当前 URL(如果用户已在框架内导航)还是初始/默认 URL?
        • 如果您不知道框架 ID,因为您没有控制将您的网站加载到 iframe 中的主机页面,该怎么办?谢谢!
        • @Christian 第一个,添加了说明。 @Angelfilm 不,您根本无法从 iframe 中控制主机页面。主机 URL可能出现在 HTTP_REFERER 请求标头中,但您需要服务器端脚本来解析它
        猜你喜欢
        • 2012-06-19
        • 2010-10-30
        • 1970-01-01
        • 2016-12-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多