如何在PHP中删除特定的HTTP响应头?

时间:2010-12-31 11:56:46

标签: php header http-headers

我想删除以下标题:

Connection: Keep-Alive
Server: Apache/2.2.13 (Win32)
Vary: Accept-Encoding
Keep-Alive: timeout=5, max=66

3 个答案:

答案 0 :(得分:4)

我不认为这可以在PHP中正确完成,因为这些标头是由Apache设置的。

PHP 5.3的header_remove()但是只能删除由PHP设置的标头(如果我理解正确的话)。您还可以通过使用空值再次发送它们来覆盖不需要的标头,但无论如何都会发送原始值。

最好的办法是在Apache的配置中修复这个问题。例如,ServerTokens指令可以更改“Server:”标头。

相关:apache_response_headers()

答案 1 :(得分:2)

您可以将脚本转换为非解析标头CGI。为此,您必须将example.php脚本重命名为nph-script.cgi,将其设为可执行文件(+ x)​​并添加shebang:

#!/usr/bin/php-cgi
<?php

这要求您自己发送所有 http标头,包括HTTP/1.0 200 OK状态行。 (参见rfc2616 php.ini config)

哦,实际上我不知道这是否适用于当前的Apache版本。

答案 2 :(得分:0)

使用PHP(或任何其他服务器站点语言)并发送标题Connection:close。这将导致Apache省略Keep-Alive标头,因为连接不再是keepalive。 e.g。

header('Connection: close');

不确定它是否适用于所有类型的服务器,建议欢迎。

阅读更多here