如果我像这样创建一个iframe:

var dialog = $('<div id="' + dialogId + '" align="center"><iframe id="' + frameId + '" src="' + url + '" width="100%" frameborder="0" height="'+frameHeightForIe8+'" data-ssotoken="' + token + '"></iframe></div>').dialog({

我如何修复这个错误:

拒绝在帧中显示“https://www.google.com.ua/?gws_rd=ssl”,因为它将“X-Frame-Options”设置为“SAMEORIGIN”。

使用JavaScript ?


当前回答

解决方案是安装一个浏览器插件。

一个发布HTTP报头X-Frame-Options值为DENY(或具有不同服务器源的SAMEORIGIN)的网站不能集成到IFRAME中…除非你通过安装一个忽略X-Frame- options报头的浏览器插件来改变这种行为(例如Chrome的忽略X-Frame报头)。

注意,出于安全原因,根本不建议这样做。

其他回答

如果你控制发送iframe内容的服务器,你可以在你的web服务器中设置X-Frame-Options。

配置Apache

要为所有页面发送X-Frame-Options报头,请将其添加到站点的配置中:

Header always append X-Frame-Options SAMEORIGIN

Configuring nginx

要配置nginx发送X-Frame-Options报头,将其添加到http、服务器或位置配置中:

add_header X-Frame-Options SAMEORIGIN;

没有配置

这个头选项是可选的,所以如果这个选项根本没有设置,你将给下一个实例配置这个选项(例如访问者浏览器或代理)

来源:https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options

如果没有帮助,你仍然想在iframe中呈现网站,考虑使用X帧绕过组件,它将利用代理。

你可以在你想要载入iframe的站点的web配置中设置x-frame选项

<httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="*" />
    </customHeaders>
  </httpProtocol>

为此,您需要匹配apache或您正在使用的任何其他服务中的位置

如果你使用apache,那么在httpd.conf文件中。

  <LocationMatch "/your_relative_path">
      ProxyPass absolute_path_of_your_application/your_relative_path
      ProxyPassReverse absolute_path_of_your_application/your_relative_path
   </LocationMatch>

不是真的…我使用

 <system.webServer>
     <httpProtocol allowKeepAlive="true" >
       <customHeaders>
         <add name="X-Frame-Options" value="*" />
       </customHeaders>
     </httpProtocol>
 </system.webServer>