如果我像这样创建一个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 ?


当前回答

不是真的…我使用

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

其他回答

不是真的…我使用

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

X-Frame-Options HTTP响应报头可用于指示浏览器是否应允许在<frame>, <iframe>或<object>中呈现页面。网站可以通过确保他们的内容没有嵌入到其他网站来避免点击劫持攻击。

欲了解更多信息: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options

对于这个问题,我有一个替代的解决方案,我将使用PHP演示:

iframe.php:

<iframe src="target_url.php" width="925" height="2400" frameborder="0" ></iframe>

target_url.php:

<?php 
  echo file_get_contents("http://www.example.com");
?>

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

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

你不能在iframe上设置X-Frame-Options。这是由向其请求资源的域(示例中为google.com.ua)设置的响应标头。在本例中,他们将报头设置为SAMEORIGIN,这意味着他们不允许在域外的iframe中加载资源。有关更多信息,请参阅MDN上的X-Frame-Options响应报头。

快速检查标题(在Chrome开发工具中显示)显示X-Frame-Options值从主机返回。

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

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

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