2009-08-16 121 views

回答

5

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

3

首先,你的页面不能在Referer的存在,也没有正确的依赖:它是由浏览器发送的信息,并可以:

  • 被禁用(有些防火墙/例如杀毒软件删除该信息,或者在某个时间之前)
  • 或者被修改/伪造(如果你搜索了一下,必须有一些Firefox允许你很容易伪造的扩展)


欲了解更多信息,请参见,例如:

这些职位都 “同意” 我^^


现在,你可以enventually用它来添加一些功能;但你不能依靠它为您的网站上工作;-)

+0

我已经知道的东西。我正在使用站点名称+公共密钥+私钥作为我正在做的某些日志记录,我只是想知道如何在页面在iFrame内调用时获取它。它是一样的还是其他的东西?这是我的问题,在你漫不经心的问题上,没有回答。 – RiddlerDev 2009-08-17 01:18:14

+0

只是为了完整:Firefox的插件是“篡改数据”和“修改头文件”。 – 2009-08-26 08:56:14

0

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

扩展Gumbo的答案:因为Referer是作为HTTP请求中的头部传输的,因此在中加载的脚本中检索它与检索任何其他脚本的内容完全相同。

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

Referer标头的值将包含承载的页面的URL。所以,如果你有一个PHP脚本名为页面与-iframe.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

1

要真正可靠地访问父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与访问父网址:

$parent_url = $_GET['parent']; 
相关问题