更改 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 以允许所有域的主要内容,如果未能解决你的问题,请参考以下文章