【问题标题】:How do I get the siteURL calling my page when it is loaded in an iFrame?当我的页面加载到 iFrame 中时,如何让 siteURL 调用我的页面?
【发布时间】:2009-08-16 17:30:37
【问题描述】:

像 $ENV{'HTTP_REFERER'} 一样简单吗?或者我还有什么需要做的吗?

示例: 我的网站:sample.php

使用 iFrame 调用站点:somesite.com

我希望 sample.php 在加载时能够使用“somesite.com”作为变量进行输入。

【问题讨论】:

    标签: php iframe http-referer


    【解决方案1】:

    内嵌框架和普通页面没有区别。并且最初使用 src 加载内联框架将发送 HTTP 引用。

    【讨论】:

      【解决方案2】:

      首先,您的页面不得依赖引用者是否存在或正确:它是由浏览器发送的信息,可以:

      • 被禁用(例如,某些防火墙/防病毒软件会删除该信息 - 或之前已删除)
      • 或者被修改/伪造(如果你稍微搜索一下,一定有一些 Firefox 扩展可以让你很容易地伪造这个,例如)


      有关更多信息,请参阅,例如:

      这些帖子都“同意”我的观点^^


      现在,您最终可以使用它来添加一些功能;但您不能依赖让您的网站运行 ;-)

      【讨论】:

      • 我已经知道这些东西了。我正在使用站点名称 + 公钥 + 私钥进行一些日志记录,我只想知道在 iFrame 中调用页面时如何获取它。是一样的方式还是别的什么?那是我的问题,在你漫无边际的回答中没有回答。
      • 为了完整性:Firefox 插件是“篡改数据”和“修改标题”。
      【解决方案3】:

      要真正可靠地访问父 URL,您可以在嵌入父 URL 时将 GET 参数添加到包含父 URL 的 iframe src。您可以使用 Javascript 将其与嵌入一起自动添加。

      这是一个在 <body> 标记末尾嵌入 iframe 的示例:

      var iframe = document.createElement('iframe');
      iframe.src = '/sample.php?parent=' + window.location;
      document.body.appendChild(iframe);
      

      然后,您可以通过以下方式从 PHP 可靠地访问父 URL:

      $parent_url = $_GET['parent'];
      

      【讨论】:

        【解决方案4】:

        正如 Pascal MARTIN 所说,您不应该绝对相信 Referer 值。

        扩展 Gumbo 的答案:由于 Referer 作为 HTTP 请求中的标头传输,因此在 <iframe> 中加载的脚本中检索它与为任何其他脚本检索它完全相同。

        当浏览器请求由<iframe> 中的src 属性指定的页面时,它会像对任何其他资源一样提交一个HTTP 请求,并将包含Referer 标头值。

        Referer 标头的值将包含托管 <iframe> 的页面的 URL。因此,如果您有一个名为 page-with-iframe.php 的 PHP 脚本,并且它包含 <iframe src="sample.php" />,则对 sample.php 的 HTTP 请求可能类似于:

        GET /sample.php HTTP/1.1
        Host: somesite.com
        ...
        Referer: http://somesite.com/page-with-iframe.php
        

        sample.php 中,您将使用 $ENV{'HTTP_REFERER'} 检索值,然后您可以从那里解析出热名称 somesite.com

        【讨论】:

          猜你喜欢
          • 2011-03-10
          • 1970-01-01
          • 1970-01-01
          • 2014-06-08
          • 1970-01-01
          • 2016-11-21
          • 2011-06-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多