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

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


当前回答

试试这个东西,我认为没有人在主题中建议过这个,这将解决你70%的问题,对于其他一些页面,你必须废弃,我有完整的解决方案,但不是公开的。

添加到下面的iframe中

沙箱="允许-同源允许-脚本允许-弹出窗口允许-表单"

其他回答

我不确定这有什么关系,但我想出了一个变通办法。在我的网站上,我想在一个包含加载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";
}


?>

希望这能有所帮助。

添加一个

  target='_top'

到我的链接在facebook标签为我解决了这个问题…

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

FWIW:

当这个“破坏者”代码出现时,我们遇到了需要杀死iFrame的情况。因此,我使用PHP函数get_headers($url);在iFrame中显示远程URL之前检查它。为了获得更好的性能,我将结果缓存到一个文件中,这样就不会每次都建立HTTP连接。

我使用的是Tomcat 8.0.30,没有一个建议对我有效。当我们希望更新X-Frame-Options并将其设置为允许时,以下是我如何配置允许嵌入iframes:

进入Tomcat conf目录,编辑web.xml文件 添加下面的过滤器:

<filter>
            <filter-name>httpHeaderSecurity</filter-name>
            <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
                   <init-param>
                           <param-name>hstsEnabled</param-name>
                           <param-value>true</param-value>
                   </init-param>
                   <init-param>
                           <param-name>antiClickJackingEnabled</param-name>
                           <param-value>true</param-value>
                   </init-param>
                   <init-param>
                           <param-name>antiClickJackingOption</param-name>
                           <param-value>ALLOW-FROM</param-value>
                   </init-param>
            <async-supported>true</async-supported>
       </filter>

       <filter-mapping>
                   <filter-name>httpHeaderSecurity</filter-name>
                   <url-pattern>/*</url-pattern>
                   <dispatcher>REQUEST</dispatcher>
       </filter-mapping> 

重启Tomcat服务 使用iFrame访问资源。