此问题来自信息安全Stack Exchange的migrated,因为它可以在12小时前的Stack Overflow. Migrated上回答。
我有两个网站。
这两个网站位于同一个托管环境。
我对托管环境有广泛的控制权。
一个网站是Drupal网站,另一个是静态网站(纯HTML网站)。
我尝试将第二个静态网站的一个HTML网页iframe嵌入到Drupal网站中,但是我得到:
iframe拒绝连接
当从浏览器控制台检查Drupal网站时,我得到:
拒绝在框架中显示“https://example.com/”,因为它将“X-Frame-Options”设置为“sameorigin”。
我不明白这个错误(sameorigin
不应该是允许嵌入的正确指令吗?)
我应该更改什么安全指令,在哪里,以允许显示iframe?
我已经尝试将以下指令放在第二个静态网站的.htaccess
中:
<IfModule mod_headers.c>
Header set X-Frame-Options "SAMEORIGIN"
</IfModule>
1条答案
按热度按时间2lpgd9681#
您应该仔细阅读origins(它们非常重要;它们是大多数Web安全边界的基础概念)。来源与Web页面的物理、逻辑或法律的来源无关;浏览器不知道,也不可能知道任何这些。源只是协议、主机名、端口的元组(有序的固定长度集合)。(这里的“主机名”通常表示完全合格的域名,而不是它的任何部分,但是本地网络站点通常只使用主机名。)您说您“有两个站点”,如果它们有不同的域名,它们 * 不 * 可能有相同的起源,因为元组的三个部分必须匹配。它们不是同一个来源!任何人的浏览器都知道,父页面是一个不相关的恶意站点,它试图违反潜在访客页面的安全约束。
可能的解决方案:
Content-Security-Policy
标头,该标头指定允许父站点的frame-ancestors
指令。srcdoc
中。这几乎肯定不是最好的方法,因为正确配置CORS比其他选项要困难得多。)