什么都不会取消设置 X-Frame-Options(Apache,PHP 5.3)

Nothing will unset X-Frame-Options (Apache, PHP 5.3)

我正在尝试实现一个可嵌入的小部件,其功能类似于 Twitter 的嵌入式推文。最简单的解决方案,虽然可能不是最好的,似乎是 iframe 或 HTML5 嵌入 - 但两者都被服务器上的 X-Frame-Options header 阻止。

我在我完全控制的专用服务器上 运行 PHP 5.3 和 Apache 2.2。

我试过在 iframe PHP 文件的第一行中放置:

header_remove("X-Frame-Options");

我尝试将以下内容添加到 .htaccess:

Header unset X-Frame-Options

我检查了 httpd.conf、虚拟主机 .conf 文件,甚至 PHP.INI,并搜索了 "x-frame" - 两者都没有明显相关的内容。

没有 mod_security 或其他插件应该在我看到的这个服务器上注入这个。

然而,无论我做什么,curl 都会验证以下 HTTP header:

X-Frame-Options: DENY

在某处是否有一些可能名称奇怪的设置仍然可以强制此 header 进入?

X-Frame-Options 被 ssl.conf 强制加入。

注释掉并重新启动 Apache 允许 .htaccess 和 PHP header 管理再次工作。

我遇到了同样的问题,我在httpd.conf

中解决了这个问题
Header append X-Frame-Options ALLOWALL

我还必须配置要加载的头模块,以便 apache 理解该指令。 然后你必须重启httpd。

以防万一,如果你想在 .htaccess 中修改它,这将是这样的:

Header always unset X-Frame-Options env=HTTPS;

考虑以下实验:

Header always set X-Frame-Options "DENY"
Header unset X-Frame-Options
Header set set X-Frame-Options "TEST"

回应headers:

X-Frame-Options "DENY"
X-Frame-Options "TEST"

第二个实验:

Header set X-Frame-Options "DENY"
Header unset X-Frame-Options
Header set set X-Frame-Options "TEST"

回应headers:

X-Frame-Options "TEST"

结论:always 选项会阻止原始值被取消设置,但不会阻止添加新值。