如何在iframe上设置'X-Frame-Options'?

Dar*_*kes 138 javascript jquery x-frame-options

如果我创建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({
Run Code Online (Sandbox Code Playgroud)

我该如何修复错误:

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

用JavaScript?

Dre*_*nor 195

你可以不设置X-Frame-Optionsiframe.这是您请求资源的域设置的响应标头(google.com.ua在您的示例中).SAMEORIGIN在这种情况下,他们设置了标头,这意味着他们不允许在iframe域外加载资源.有关更多信息,请参阅MDN上的X-Frame-Options响应头.

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

在此输入图像描述

  • 现在 2021 年。根据 [https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options#syntax](最新 MDN 文档),DENY 和 SAMEORIGIN 是仅存的有效选项,ALLOW-FROM 被认为已过时。这是否意味着跨站点 iframe 已正式成为过去(除非通过插件等明确规避)? (9认同)
  • 使用YouTube,您可以将端点URL更改为"嵌入"版本.请参阅http://stackoverflow.com/questions/25661182/embed-youtube-video-refused-to-display-in-a-frame-because-it-set-x-frame-opti(我知道这不严格OP正在寻找什么,但谷歌首先给出了这个结果!) (4认同)

Ror*_*san 62

你似乎误解了这个问题.X-Frame-Options如果请求的域将允许自己在帧内显示,则返回带有请求的头.它与javascript或HTML无关,也不能由请求的发起者更改.

本网站设置此标题以禁止它显示在iframe.你无能为力阻止这种行为.

进一步阅读X-Frame-Options

  • @nickang 这就是我的意思,但是我同意术语不清楚。我已经编辑它以消除任何混淆。谢谢。 (2认同)
  • “客户无法阻止这种行为。” 这实际上是不正确的,因为我的“客户端”可能是一个节点服务器(或任何其他服务器),它下载页面内容(抓取)并使内容(包括 CSS、JS 等)可加载到您自己的站点中 (2认同)

rub*_*o77 28

如果您控制发送iframe内容的服务器,则可以X-Frame-Options在Web服务器中设置设置.

配置Apache

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

Header always append X-Frame-Options SAMEORIGIN
Run Code Online (Sandbox Code Playgroud)

配置nginx

要配置nginx以发送X-Frame-Options标头,请将其添加到您的http,服务器或位置配置中:

add_header X-Frame-Options SAMEORIGIN;
Run Code Online (Sandbox Code Playgroud)

没有配置

此标头选项是可选的,因此如果未设置该选项,您将提供将其配置为下一个实例的选项(例如访问者浏览器或代理)

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

  • NGINX,**重要的说哪里**,里面的位置? (2认同)

Mik*_*e Q 7

由于服务器端并未真正提及该解决方案:

必须设置这样的内容(例如来自apache的例子),这并不是最好的选择,因为它允许所有操作,但是在看到服务器正常工作之后,您可以轻松更改设置。

           Header set Access-Control-Allow-Origin "*"
           Header set X-Frame-Options "allow-from *"
Run Code Online (Sandbox Code Playgroud)


Tom*_*vid 7

如果没有任何帮助,并且您仍然希望在 iframe 中显示该网站,请考虑使用X Frame Bypass 组件,该组件将利用代理。


小智 5

不是......我用过

 <system.webServer>
     <httpProtocol allowKeepAlive="true" >
       <customHeaders>
         <add name="X-Frame-Options" value="*" />
       </customHeaders>
     </httpProtocol>
 </system.webServer>
Run Code Online (Sandbox Code Playgroud)