【问题标题】:iFrame Widget get URL and IP AddressiFrame Widget 获取 URL 和 IP 地址
【发布时间】:2014-05-14 21:35:03
【问题描述】:

我有一个我构建的小部件,它将作为调用 PHP 页面的 iFrame 放置在多个站点上。我需要保存使用小部件的 IP 地址和 URL。

iFrame:

<iframe frameborder='0' width='620' height='620' src='http://example.com/widget.php?rid=22'></iframe>

现在我正在尝试:

$ip_address = $_SERVER["REMOTE_ADDR"];
$url = $_SERVER['REQUEST_URI'];

这会不断返回与我的 PHP 文件所在位置相同的信息。

提前致谢!

【问题讨论】:

  • 我不认为你能做到,因为 Origin 政策:en.wikipedia.org/wiki/Same_origin_policy.
  • 你可以试试$_SERVER['HTTP_REFERER'],但它不是很可靠,因为它是由浏览器/用户代理设置的。

标签: javascript php jquery mysql iframe


【解决方案1】:

不确定 IP 地址,但您至少可以使用 javascript 的父级获取父级位置。例如:

parent.location.href

【讨论】:

    【解决方案2】:

    一个内联框架,一个 iframe,在另一个页面上查看。它不会使该代码段成为包含 iframe 的页面的一部分。它是框架,但实际上并不包括 src 属性中指向的内容。这是“嵌套浏览上下文”的一部分。在观众看来,它是嵌套的。但是,这些零件是存放它们的地方。这也是服务器报告文件所在页面地址的部分原因。

    http://www.w3.org/TR/2011/WD-html5-20110525/the-iframe-element.html#the-iframe-element

    【讨论】:

      【解决方案3】:

      一个 iframe 只是在另一个框架中包含任何外部 Web 应用程序的一部分。

      表示在 iframe 中执行的服务器端代码在托管服务器上。

      所以你不能访问 --- 幸运的是! --- 嵌入服务器服务器端代码,例如 PHP 全局变量。

      您可以尝试的唯一方法(由于Same Origin Policy,这不是一种干净或有效的保证方式)是在javascript中询问有关客户端嵌入式应用程序的一些信息。 在 Javascript 中,您可以访问当前 URL,但不能访问 IP 地址,除非嵌入的服务器端代码允许您这样做。

      看看this question

      【讨论】:

        【解决方案4】:

        谢谢大家,但我已经解决了这个问题......

        var iframe = (parent !== window);
        var url = null;
        
        if(iframe) {
            url = document.referrer;
            ref = url.match(/:\/\/(.[^/]+)/)[1];
        }
        

        “url”变量将返回 iFrame 所在的完整 url 和页面,而“ref”将仅返回域。

        【讨论】:

          猜你喜欢
          • 2013-08-01
          • 2020-06-10
          • 1970-01-01
          • 2010-11-04
          • 2018-12-19
          • 1970-01-01
          • 1970-01-01
          • 2011-10-11
          相关资源
          最近更新 更多