【问题标题】:Possible alternatives to PHP header_removePHP header_remove 的可能替代方案
【发布时间】:2016-02-12 13:14:21
【问题描述】:

我正在开发的网站在我自己的服务器上,我没有太多(任何)访问网站 SFTP 之外的服务器设置的权限。

服务器之前运行的是 PHP 5.21,我用过

header("X-Powered-By:");

覆盖并删除 X-Powered-By 标头。这行得通,但我发现自从服务器更新到 PHP 5.6 后,这不再有效,并且生成的标头是:

X-Powered-By:

X-Powered-By:PleskLin

没想到同一个标题会有多行,所以我尝试在页面中添加代码

header_remove("X-powered-by");

PleskLin 标题仍然存在。显然,在 PHP 处理页面之后添加了标头,因此请记住,这是一个我真的不熟悉的服务器。

也在运行

header_remove();

不删除 X-Powered-By 标头,但会删除其他 PHP 集标头。

  • 有没有办法可以在 PHP 中删除此标头?
  • 如果 PHP 无法删除此标头,如何在服务器上删除此标头(我可以向服务器所有者发送电子邮件并要求他们更改设置,但在我之前的几次经验中,他们不是很精通技术和他们一起)。

【问题讨论】:

  • 如果 PHP 完成后设置了标头,那么您实际上无能为力。 Web 服务器对返回的响应有最后的发言权,如果它添加了一个标头,不管它是什么。
  • 如果您的托管公司不“精通技术”,那么是时候选择其他公司了。
  • 它不是 我的 托管公司,@ThiefMaster,它是客户
  • @deceze 你可能对我的回答感兴趣。 .htaccess 删除标题适用于此。
  • @Martin 我的印象是你不能对服务器做太多事情。是的,如果您将服务器重新配置为不设置/删除标头,那么显然可以解决问题。

标签: php http-headers


【解决方案1】:

您可以这样做的唯一方法是要求主机在 php.ini 文件中为您将 expose_php 设置为关闭。

【讨论】:

  • 是否会删除标头本身,因为标头不共享 php 版本,但服务器是 Plesklin
  • PHP 不会将“PleskLin”设置为其标题。
【解决方案2】:

我发现在 PHP 中设置 header_remove 并且(奇怪地)还添加了一个带有以下内容的 .htaccess 确实删除了所有 X-Powered-By 标头:

<IfModule mod_headers.c>
  Header unset X-Powered-By
</IfModule>

解释: 给出的原始标题是:

x-技术支持:Plesklin

如果我只是添加了.htaccess 删除代码,标题就变成了

X-Powered-By:PHP 5.6.1

但随后结合页面上的header_remove('X-Powered-By') 这清除了该特定标头的所有值。

【讨论】:

    猜你喜欢
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多