【问题标题】:Nothing will unset X-Frame-Options (Apache, PHP 5.3)什么都不会取消设置 X-Frame-Options (Apache, PHP 5.3)
【发布时间】:2016-01-15 07:27:53
【问题描述】:

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

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

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

header_remove("X-Frame-Options");

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

Header unset X-Frame-Options

我检查了 httpd.conf、vhost .conf 文件,甚至 PHP.INI,并搜索了“x-frame”——两者都没有明显的相关性。

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

无论我做什么,curl 都会验证以下 HTTP 标头:

X-Frame-Options: DENY

是否有一些(可能是奇怪的命名设置)仍然会强制此标头进入?

【问题讨论】:

  • PHP 代码完全是您自己的,还是您使用某种框架库?出于安全原因,框架是否会将此作为其默认行为的一部分?
  • 另外,题外话,但请注意 PHP 5.3 已经结束。事实上,即使是 PHP 5.4 现在也已经报废了。您应该考虑升级,尤其是因为您可以完全控制服务器。
  • 感谢您的回复 - 站点根目录正在使用 WordPress,但此代码是我自己的,为了简单起见,暂时将其放在 CMS 外部的独立文件中。还有一个可靠的建议:5.3,升级我的生产服务器有点紧张。 :)
  • 如果 PHP 代码是独立的并且您检查过 Apache 等,那么我不知道它来自哪里。但是您是否尝试在 PHP 代码中添加 header() 行来覆盖它?可能不是理想的解决方案,但试试吧;它可能会起作用。
  • 重新 PHP 升级 -- 是的,在升级实时服务器时要小心谨慎。不过,它确实必须不时进行;你真的不能躲在沙子里。管理这样的升级有完善的流程(其中最重要的是确保首先备份所有内容!)。但我建议转到 SO 的姊妹站点 ServerFault 来更详细地讨论这类事情。

标签: php apache x-frame-options


【解决方案1】:

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

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

【讨论】:

  • 此标头也可能已在 /etc/apache2/conf-enabled/ssl-params.conf (Ubuntu 16.04) 或 security.conf 中设置
【解决方案2】:

我遇到了同样的问题,我在httpd.conf解决了这个问题

Header append X-Frame-Options ALLOWALL

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

【讨论】:

  • 您应该使用Header set,因为append 可能会重复标题 - 请参阅文档The response header is added to the existing set of headers, even if this header already exists. This can result in two (or more) headers having the same name. This can lead to unforeseen consequences, and in general set, append or merge should be used instead.
  • ALLOWALL 不是“X-Frame-Options”developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…的有效值
【解决方案3】:

以防万一你想在 .htaccess 中修改它:

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

【讨论】:

  • 如果网站本身强制使用这样的标题,则此方法有效。
【解决方案4】:

考虑以下实验:

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

响应标题:

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"

响应标题:

X-Frame-Options "TEST"

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 2019-09-21
    • 2013-06-10
    • 1970-01-01
    • 2016-11-09
    • 2021-05-06
    • 2019-04-09
    相关资源
    最近更新 更多