更改 X-Frame-Options 以允许所有域

Posted

技术标签:

【中文标题】更改 X-Frame-Options 以允许所有域【英文标题】:Change the X-Frame-Options to allow all domains 【发布时间】:2017-11-10 05:22:49 【问题描述】:

我正在尝试使用我的某个站点作为来自我的另一个站点的 iframe

我的问题是 - 另一个站点总是不断更改他的 IP 地址并且没有域名。

所以,我读到您可以通过将此 lint 添加到 /etc/nginx/nginx.conf 来分配特定域:

 add_header X-Frame-Options "ALLOW-FROM https://subdomain.example.com/";

我的问题是:是否可以允许将我的网站作为 iframe 从所有 IP 地址和域导入?为了实现这一点,我应该写什么?

我使用的是 Ubuntu 16.04 和 nginx 1.10.0。

【问题讨论】:

【参考方案1】:

如果设置了,则只能将其设置为 DENY、SAMEORIGIN 或 ALLOW-FROM(特定来源)。

允许所有域是默认设置。如果需要,请不要设置 X-Frame-Options 标头。

请注意,X-Frame-Options 的继任者 — CSP's frame-ancestors directive — 接受允许来源的 list,因此您可以轻松地允许 some 来源而不是没有、一个或全部.

【讨论】:

【参考方案2】:

ALLOWALL 是默认值。

有时框架 MVC(如 Rails、Laravel、Django 等)会将 X_FRAME_OPTIONS 设置为 SAMEORIGIN,因此可能需要将其重置为原点 ALLOWALL 值。

【讨论】:

ALLOWALL 不是一个可接受的值:developer.mozilla.org/en-US/docs/Web/HTTP/Headers/… 如前所述,ALLOWALL 不是X-Frame-Options 标头的有效指令。无效的值(与任何无效的标头一样)应该被浏览器简单地忽略 - 这就是这里会发生的事情 - 这是“默认值”(没有标头 - 允许所有访问)。如果这是所需的结果,最好简单地删除标题。【参考方案3】:

你可以从服务器检查远程主机的 IP 地址。然后,您可以发送一个 X-Frame-Options 响应 HTTP 标头,其值为:“Allow-From ip-address”,其中 ip address 是尝试在您的服务器上嵌入内容的远程 IP 地址。这将允许所有使用浏览器 IP 地址访问的网站嵌入您的网站。

另一种选择是将内容嵌入 iframe 并在 iframe 源 URL 中包含域名。域名参数可以被服务器读取并包含在 X-Frame-Options 响应头中。

【讨论】:

以上是关于更改 X-Frame-Options 以允许所有域的主要内容,如果未能解决你的问题,请参考以下文章

X-Frame-Options 拒绝加载:不允许跨域框架

如何在 Django 中配置 X-Frame-Options 以允许 iframe 嵌入一个视图?

X-Frame-Options

X-Frame-Options的nginx配置

apache 上的 X-Frame-Options

odoo开发学习 --修改odoo12代码,允许跨域访问