我发现这不起作用:
<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'插件,则其工作正常