我正在写一个小网页,它的目的是框架其他一些页面,只是为了将它们合并到一个浏览器窗口中,以便于查看。一些页面,我试图框架禁止被框架,并抛出“拒绝显示文档,因为显示禁止X-Frame-Options.”错误在Chrome。我知道这是一个安全限制(有充分的理由),并且无法更改它。

是否有任何替代的框架或非框架方法来在单个窗口中显示页面,而不会被X-Frame-Options报头绊倒?


当前回答

如果在尝试嵌入Vimeo内容时遇到此错误,请更改iframe的src,从:https://vimeo.com/63534746更改为:http://player.vimeo.com/video/63534746

其他回答

当我尝试在iframe中嵌入moodle 2时,我也有同样的问题,解决方案是站点管理►安全►HTTP安全并检查允许框架嵌入

我有一个类似的问题,我试图在一个iframe中显示我们自己网站的内容(作为一个带有Colorbox的lightbox样式的对话框),并且我们在源服务器上有一个服务器范围的“X-Frame-Options SAMEORIGIN”报头,防止它加载到我们的测试服务器上。

这似乎没有被记录在任何地方,但如果你可以编辑你试图iframe的页面(例如。,它们是你自己的页面),简单地发送另一个X-Frame-Options报头,任何字符串都禁用SAMEORIGIN或DENY命令。

如。对于PHP,放入

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

在页面的顶部会使浏览器将两者结合起来,从而导致页眉为

X-Frame-Options SAMEORIGIN, GOFORIT

...并允许您在iframe中加载页面。当初始的SAMEORIGIN命令设置在服务器级别时,这似乎可以工作,并且您希望在逐页情况下重写它。

祝你一切顺利!

我不确定这有什么关系,但我想出了一个变通办法。在我的网站上,我想在一个包含加载URL的iframe的模态窗口中显示链接。

我所做的是,我将链接的点击事件链接到这个javascript函数。所有这些操作都是向一个PHP文件发出请求,该文件在决定是在模式窗口中加载URL还是重定向之前,检查URL头中的X-FRAME-Options。

函数如下:

  function opentheater(link, title){
        $.get( "url_origin_helper.php?url="+encodeURIComponent(link), function( data ) {
  if(data == "ya"){
      $(".modal-title").html("<h3 style='color:480060;'>"+title+"&nbsp;&nbsp;&nbsp;<small>"+link+"</small></h3>");
        $("#linkcontent").attr("src", link);
        $("#myModal").modal("show");
  }
  else{
      window.location.href = link;
      //alert(data);
  }
});


        }

下面是检查它的PHP文件代码:

<?php
$url = rawurldecode($_REQUEST['url']);
$header = get_headers($url, 1);
if(array_key_exists("X-Frame-Options", $header)){
    echo "nein";
}
else{
    echo "ya";
}


?>

希望这能有所帮助。

如果你试图在iframe中嵌入谷歌Map时遇到这个错误,你需要在源链接中添加&output=embed。

这就是解决办法!!

FB.Event.subscribe('edge.create', function(response) {
    window.top.location.href = 'url';
});

这是唯一适用于facebook应用的方法!