3

我发现这不起作用:

<iframe src="http://www.yahoo.com"> </iframe>

我已经阅读了这个问题,但我不明白他们所说的添加是什么意思:

<?php
header('X-Frame-Options: GOFORIT'); 
?>

我尝试将其添加到我的 html 文件的顶部(当然,将其更改为 php 文件),我的 php 文件变为:

<?php
header('X-Frame-Options: GOFORIT'); 
?>
<iframe src="http://www.yahoo.com"> </iframe>

我在我的 appserv(使用 php 5.2.6)中运行它,但它不起作用。谁能解释我应该怎么做才能克服这个问题?

4

4 回答 4

5

你不走运:yahoo.com 不允许你将他们的网站嵌入到 iframe 中。facebook 或其他流行网站也没有。

这种限制的原因是点击劫持

您可以通过检查其站点的响应标头来验证这一点;他们指定X-Frame-Options:SAMEORIGIN这意味着只有 yahoo.com 可以嵌入 yahoo.com 页面。

一些较旧的浏览器不会强制执行标题,但所有新浏览器都会。Afaik,没有简单的解决方法。

我能想到的唯一解决方案是实现一个代理脚本,即您嵌入一个脚本,该脚本位于您的服务器上,为您获取远程内容。

例如。您的 iframe 调用“/my-proxy.php?url= http://www.yahoo.com/ ”,该脚本如下所示:

<?php

header('X-Frame-Options: SAMEORIGIN'); // don't allow other sites to use my proxy
echo file_get_contents($_GET['url']);

你的旅费可能会改变...

于 2013-05-18T13:58:36.460 回答
2

您在跨域资源共享方面遇到问题。阅读这些Wikipedia CORSMDN CORS文章。

至于你的片段,

<?php
  header('X-Frame-Options: GOFORIT'); 
?>

需要添加到正在服务的页面,而不是请求它的页面/代码,在这种情况下是yahoo.com. 但由于你不为yahoo.com自己服务,所以没有办法添加它。

但是,如果问题是关于您自己的页面并且yahoo.com只是一个示例,您可以简单地设置文章中指定的正确 HTTP 标头,您会很好。

于 2013-05-18T13:53:31.877 回答
0

谷歌、雅虎等一些网站已禁用其网站的 iframe 嵌入。如果你想这样做,那么在服务器端使用 curl 或 file_get_conents 获取他们的 html 并显示它。

检查 HTTP 响应标头 X-Frame-Option。我认为对于雅虎来说,它应该是拒绝或同源,这意味着只有雅虎的页面可以在 iframe 中嵌入它的其他页面

于 2013-05-18T13:54:14.523 回答
-2

在 google chorme 中添加“ Ignore X-Frame headers ”插件,然后它工作正常。

于 2016-09-10T13:04:26.257 回答