我发现这不起作用:
<iframe src="http://www.yahoo.com"> </iframe>
我已阅读此question,但我不明白添加内容的含义:
<?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)中运行它,它不起作用。任何人都可以解释我应该做些什么来克服这个问题吗?
答案 0 :(得分:5)
你运气不好:yahoo.com不允许你将他们的网站嵌入到iframe中。 Facebook或其他热门网站也不是。
此限制的原因是clickjacking。
您可以通过检查其网站的响应标头来验证这一点;他们指定X-Frame-Options:SAMEORIGIN
,这意味着只有yahoo.com才能嵌入yahoo.com页面。
某些较旧的浏览器不会强制执行标题,但所有新标题都会强制执行。 Afaik,没有简单的方法。
我能想到的唯一解决方案是实现代理脚本,即您在服务器上嵌入了一个脚本,可以为您提取远程内容。
EG。您的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']);
您的里程可能会有所不同......
答案 1 :(得分:2)
您遇到跨域资源共享问题。阅读这些Wikipedia CORS和MDN CORS条款。
至于你的代码段,
<?php
header('X-Frame-Options: GOFORIT');
?>
需要添加到正在投放的网页,而不是添加到请求它的网页/代码,在这种情况下会yahoo.com
。但是,由于您没有自己提供yahoo.com
,因此无法添加它。
然而如果问题与您自己的网页有关,yahoo.com
只是一个示例,您只需设置文章中指定的正确HTTP标头,就可以了。
答案 2 :(得分:0)
google,yahoo等网站已停用其网站的iframe嵌入功能。如果你想这样做,那么在服务器端使用curl或file_get_conents抓取他们的html并显示它。
检查HTTP响应标头X-Frame-Option。我认为雅虎它应该是deny或sameorigin,这意味着只有雅虎页面可以将其他页面嵌入iframe
答案 3 :(得分:-1)
在google chorme中添加'忽略X-Frame标题'插件,然后工作正常。