如何在iFrame中加载siteURL时调用我的页面?

时间:2009-08-16 17:30:38

标签: php iframe http-referer

是否像$ ENV {'HTTP_REFERER'}一样简单?或者还有其他我需要做的事情吗?

实施例: 我的网站:sample.php

使用iFrame调用网站:somesite.com

加载时我想要sample.php,以便能够使用“somesite.com”作为变量输入。

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

首先,您的网页不得依赖对Referer存在也不正确:它是由浏览器发送的信息,可以是:

  • 被禁用(例如,某些防火墙/防病毒软件删除了这些信息 - 或者之前已经删除过)
  • 或被改变/伪造(如果你搜索一下,必须有一些firefox扩展,允许你很容易伪造这个,例如)


有关更多信息,请参阅:

这些帖子都“同意”我^^


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

答案 2 :(得分:1)

要获得真正可靠的访问父URL的方法,您可以在嵌入父URL时将其添加到包含父URL的iframe src。您可以使用Javascript自动添加此内容以及嵌入。

以下是将iframe嵌入<body>标记末尾的示例:

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

然后,您可以使用以下命令从PHP可靠地访问父URL:

$parent_url = $_GET['parent'];

答案 3 :(得分:0)

正如Pascal MARTIN所提到的,你绝对不应该相信Referer值。

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

当浏览器请求src<iframe>属性指定的页面时,它将提交类似于任何其他资源的HTTP请求,并且将包含Referer标头值。< / p>

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

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

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