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

IT技术 javascript jquery x-frame-options
2021-01-26 20:41:29

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

6个回答

你不能X-Frame-Optionsiframe. 这是由您请求资源的域设置的响应标头(google.com.ua在您的示例中)。SAMEORIGIN在这种情况下,他们已将标头设置为,这意味着他们已禁止在其iframe域外部加载资源有关更多信息,请参阅MDN 上的 X-Frame-Options 响应标头

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

在此处输入图片说明

使用 YouTube,您可以将端点 URL 更改为“嵌入”版本。请参阅stackoverflow.com/questions/25661182/... (我知道这并不是 OP 严格搜索的内容,但谷歌首先给出了这个结果!)
2021-03-10 20:41:29
现在是 2021 年。根据 [ developer.mozilla.org/en-US/docs/Web/HTTP/Headers/... MDN docs),DENY 和 SAMEORIGIN 是唯一剩余的有效选项,ALLOW-FROM 被视为过时。这是否意味着跨站点 iframe 正式成为过去式(除非通过插件等明确规避)?
2021-04-09 20:41:29

X-Frame-Options是包含在对请求响应中的标头,用于说明所请求的域是否允许自己在框架内显示。它与 javascript 或 HTML 无关,并且不能被请求的发起者更改。

本网站已设置此标题以禁止其显示在iframe. 客户无法阻止这种行为。

进一步阅读 X-Frame-Options

它设置在响应头中,而不是请求头中。但否则准确的解释!
2021-03-17 20:41:29
@nickang 这就是我的意思,但是我同意术语不清楚。我已经对其进行了编辑以消除任何混淆。谢谢。
2021-03-23 20:41:29
“客户无法阻止这种行为。” - 感谢您澄清这一点!
2021-03-23 20:41:29
“客户无法阻止这种行为。” 这实际上不是真的,因为我的“客户端”可能是一个节点服务器(或任何其他服务器),它下载页面内容(抓取)并使内容(包括 CSS、JS 等)可以加载到您自己的站点中
2021-03-24 20:41:29

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

配置 Apache

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

Header always append X-Frame-Options SAMEORIGIN

配置nginx

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

add_header X-Frame-Options SAMEORIGIN;

无配置

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

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

对于 Apache,在您网站的 <directive> 标签内添加选项,很可能是 /etc/apache2/sites-enabled/ 内的配置文件
2021-03-19 20:41:29
这对我有帮助。我将这两行注释掉:add_header Strict-Transport-Security "max-age=86400; includeSubdomains"; add_header X-Frame-Options DENY;来自 nginx-snippets,然后它立即生效。
2021-04-04 20:41:29
NGINX,重要的是说 where, inside location ?
2021-04-08 20:41:29
我可以知道我需要为 Apache 设置此标头的位置吗?
2021-04-09 20:41:29

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

必须设置这样的设置(来自 apache 的示例),这不是最好的选择,因为它在所有情况下都允许,但是在您看到服务器正常工作后,您可以轻松更改设置。

           Header set Access-Control-Allow-Origin "*"
           Header set X-Frame-Options "allow-from *"

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