在我的申请,我有一个iframe,可以打开任何网页(99%的时间,同一来源)。但是用户可以点击iframe内部的链接并访问外部网站。我设法检测到该网站是否具有相同的来源,但对"https://www.google.ca/“这样的网站的请求会引发以下错误:
'https://www.google.ca/‘拒绝在帧中显示,因为它将“X帧选项”设置为“SAMEORIGIN”.
我的iframe绑定了一个beforeunload、onerror和onload事件,但是我无法通过事件对象来处理这个安全问题。
发布于 2015-09-11 11:24:58
有同样的问题,将第三方页面加载到我的iframe中,其中一些页面被X框架选项阻塞,而这些选项没有包含在HTML中。
注意:在CHROME,iPhone,MozillaAndroid4.4.2中工作,但不工作在FireFox上。
如果您希望在新窗口中打开这些页面,我就是这样管理它的。也许对其他人有用的东西,为这个特殊的情况寻找解决方案。
PHP ( get_headers )对他们中的大多数人都很好,但我几乎没有把X框架选项直接输入到header (自动包含),所以get_headers失败了,浏览器收到了X框架选项拒绝的负载: your_guest_url不允许跨源帧。
我不得不在我的第一个页面上添加链接,让用户在新窗口中打开有问题的页面,点击它并使用javascript、loading图标和setTimeout()创建中间页面。
firstpage.php与“iframe”和“a”在“iframe”下面
<?php
foreach(get_headers("http://".$_REQUEST["address"]) as $v) {
if($v == "X-Frame-Options: SAMEORIGIN" || $v == "X-Frame-Options: DENY") {
header("location: http://".$_REQUEST["address"]);
die();
}
}
?>
<iframe id="iframe-id" src="secondpage.php"></iframe>
<a href=your_guest_url>go to your_guest_url</a>
<script language='javascript'>
setTimeout(function() {
document.getElementById('iframe-id').src = 'your_guest_url';
},500);
</script>加载到iframe中的secondpage.php
<div class="loading-info">
<div id="loading-info" class="loading-info-content">
<i class="fa fa-3x fa-spinner fa-pulse"></i>
</div>
</div>
<script>
setTimeout(function() {
document.getElementById("loading-info").innerHTML = "<p'>USE LINK BELOW IFRAME</p>";
},5000);
</script>没有“隐藏”X框架选项的页面在500 so后通过javascript加载到iframe,有问题的页面不会加载,因此第二页停留在iframe中并执行javascript setTimeout();。
https://stackoverflow.com/questions/16403061
复制相似问题