为什么Iframe不适合yahoo.com ?


Why Iframe dosen't work for yahoo.com

我发现这不起作用:

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

我已经读了这个问题,但是我不明白add是什么意思:

<?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)中运行它,它不起作用。谁能解释一下我到底该怎么做才能克服这个问题?

你运气不好:yahoo.com不允许你在iframe中嵌入他们的网站。facebook和其他热门网站也没有。

这个限制的原因是点击劫持。

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

一些旧的浏览器不会强制执行标题,但所有的新浏览器都会。恐怕没有什么简单的办法。

我能想到的唯一解决方案是实现代理脚本,即你嵌入一个脚本,生活在你的服务器获取远程内容为你。

。您的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']);

跨域资源共享出现问题。阅读这些维基百科CORS和MDN CORS文章。

对于您的代码片段,

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

需要添加到正在服务的页面中,而不是添加到请求它的页面/代码中,在本例中是yahoo.com。但由于您自己不提供yahoo.com,因此没有办法添加它。

然而如果问题是关于你自己的页面和yahoo.com只是一个例子,你可以简单地设置正确的HTTP头在文章中指定,你会很好。

谷歌、雅虎等网站已禁用iframe嵌入功能。如果你想这样做,然后在服务器端使用curl或file_get_contents抓取他们的html并显示它。

检查HTTP响应头X-Frame-Option。我认为雅虎应该是deny或同源这意味着只有雅虎的页面可以在iframe

中嵌入其他页面

在google chrome中添加'Ignore X-Frame headers'插件,则其工作正常