有同样的问题,将第 3 方页面加载到我的 iframe 中,其中一些被 HTML 中未包含的 X-Frame-Options 阻止。
注意:在 CHROME、iPhone、Mozilla Android 4.4.2 上工作,但在 FireFox 上不工作。
如果您希望这些页面在新窗口中打开,这就是我的管理方式。对于其他人为这个特定场景搜索解决方案可能有用的东西。
PHP(get_headers)对他们中的大多数人来说都很好,但我遇到了少数没有将 X-Frame-Options 直接放入 HTML 标头(自动包含),因此 get_headers 失败并且浏览器收到此 [Load denied by X-Frame-Options: your_guest_url 不允许跨域框架。]
我必须在我的第一页上添加链接,让用户通过单击它在新窗口中打开有问题的页面,并使用 javascript、加载图标和 setTimeout() 创建中间页面。
firstpage.php [在 'iframe' 下方带有 'iframe' 和 'a']
<?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>
secondpage.php [加载到 iframe]
<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-Frame-Options 的页面在 500 毫秒后通过 javascript 加载到 iframe 中,有问题的页面不会加载,因此 secondpage 停留在 iframe 中并执行 javascript setTimeout();。