Php 允许设置页面框架,但不允许在其上显示';他自己的
这是关于控制页面可以在哪些站点上构建的后续内容 我想使用接受的答案,但是当点击iframe中的链接时,引用者会被报告为承载框架内容的域。如果站点不在框架内,是否有服务器端方法防止其显示?(阿帕奇,php5) 以下是我想说的:Php 允许设置页面框架,但不允许在其上显示';他自己的,php,apache,iframe,Php,Apache,Iframe,这是关于控制页面可以在哪些站点上构建的后续内容 我想使用接受的答案,但是当点击iframe中的链接时,引用者会被报告为承载框架内容的域。如果站点不在框架内,是否有服务器端方法防止其显示?(阿帕奇,php5) 以下是我想说的: 我的服务器生成了一些内容。我们希望与其他特定网站共享该内容。我们不希望此内容自行显示。如果可能的话,我不想依赖客户端脚本,因为它可以关闭。(将body标签或main wrapper div设置为display:none并没有真正的帮助,因为内容仍然在源代码中。)我认为服务器
我的服务器生成了一些内容。我们希望与其他特定网站共享该内容。我们不希望此内容自行显示。如果可能的话,我不想依赖客户端脚本,因为它可以关闭。(将body标签或main wrapper div设置为
display:none
并没有真正的帮助,因为内容仍然在源代码中。)我认为服务器(或服务器端代码)不可能知道页面是否显示在iframe中。服务器提供页面请求,但不知道演示文稿
我认为最接近服务器端解决方案(PHP)的方法是检查$server['HTTP\u REFERER']
如果您必须将对脚本的访问限制在一个框架内,那么您将需要客户端上的某些东西来检查演示文稿。在javascript中实现这一点的两个解决方案是和我认为服务器(或服务器端代码)不可能知道页面是否显示在iframe中。服务器提供页面请求,但不知道演示文稿 我认为最接近服务器端解决方案(PHP)的方法是检查
$server['HTTP\u REFERER']
如果您必须将对脚本的访问限制在一个框架内,那么您将需要客户端上的某些东西来检查演示文稿。在javascript中实现这一点的两个解决方案是和PHP不可能知道请求是否来自iframe内部,因为它将具有与在顶级窗口中发出的完全相同的形式 为什么不能使用includes?在这种情况下,有一个简单的解决方案:
if (strcmp(basename($_SERVER['SCRIPT_NAME']), basename(__FILE__)) === 0){
header("location: index.php");
}
编辑:
我想说的是,使用iFrame,您无法控制服务器端的访问
让我们设想一下,您拥有自己的主页index.php
,以及iframed页面,如foo.php
执行
操作时,会向服务器发出一个新的HTTP请求,该请求与对index.php
发出的请求几乎相同
使用includes,您只有一个请求。PHP服务器解析的请求的参数之一是脚本名。执行以下操作时:GET/index.php HTT/1.1
,脚本名称将为index.php
将我展示给您的代码放在包含的文件中会阻止它们被直接访问,您可以通过包含引用它们。PHP不可能知道请求是否来自iframe内部,因为它的格式与在顶级窗口中发出的格式完全相同 为什么不能使用includes?在这种情况下,有一个简单的解决方案:
if (strcmp(basename($_SERVER['SCRIPT_NAME']), basename(__FILE__)) === 0){
header("location: index.php");
}
编辑:
我想说的是,使用iFrame,您无法控制服务器端的访问
让我们设想一下,您拥有自己的主页index.php
,以及iframed页面,如foo.php
执行
操作时,会向服务器发出一个新的HTTP请求,该请求与对index.php
发出的请求几乎相同
使用includes,您只有一个请求。PHP服务器解析的请求的参数之一是脚本名。执行以下操作时:GET/index.php HTT/1.1
,脚本名称将为index.php
将我展示给您的代码放在包含的文件中会阻止它们被直接访问,您可以通过包含引用它们。我遇到了与此相同的问题:
$ref = $_SERVER['HTTP_REFERER'];
if($ref == '') {
exit;
}
iframe的referer是父窗口的url,因此,如果要iframe的页面没有referer,则不会加载,因此您需要我遇到了与此相同的问题:
$ref = $_SERVER['HTTP_REFERER'];
if($ref == '') {
exit;
}
iframe的referer是父窗口的url,因此,如果要iframe的页面没有referer,则不会加载,因此您会得到想要的内容。据我所知,服务器无法可靠地知道请求的上下文。您能否颠倒您链接的帖子上的条件?我的意思是,检查页面是否有一个窗口。父级,如果是,则显示其他显示禁止的错误?测试referer是否来自iframe所在的页面。如果没有,则加载它应该驻留的页面。@Reikyoshin我知道我可以在客户端检测到它。我正在寻找一种在HTML发送到客户端之前知道的方法。不过,我可能会想出一个ajax解决方案。。据我所知,没有可靠的方法让服务器知道所请求的上下文。你能不能把你链接的帖子上的条件颠倒过来?我的意思是,检查页面是否有一个窗口。父级,如果是,则显示其他显示禁止的错误?测试referer是否来自iframe所在的页面。如果没有,则加载它应该驻留的页面。@Reikyoshin我知道我可以在客户端检测到它。我正在寻找一种在HTML发送到客户端之前知道的方法。不过,我可能会想出一个ajax解决方案。。在我提问之前,我几乎得出了相同的结论,但希望其他人知道我忽略了什么。在我提问之前,我几乎得出了相同的结论,但希望其他人知道我忽略了什么。如果我遵循您代码的逻辑,那么它会与我试图做的完全相反。如果我没有遵循代码的逻辑,那么请详细说明