0

我在我的 ubuntu 12.04 系统 apache2 上运行并使用响应头。我想更改 http 响应标头的行为,尤其是 Content-Length 标头。我尝试在 IfModule mod_headers.c 部分的 apache2.conf 中添加以下行:如果我运行curl -I localhost我得到预期的标头字段Content-Length: 1338(curl -I 执行 HEAD 请求)。 如果我运行curl -i,则正确计算 Content-Length。 在 RFC2616 中,第 9.4 节描述了 HEAD 请求应该与响应 GET 请求而发送的信息相同。 有人可以向我解释这种行为吗?!

Header set Static-Header "Static Content with nonsense"
Header set Content-Length "1338"




4

1 回答 1

0

Apache2 在实际交付内容时总是从头开始计算内容长度。如果您使用 PHP 更改该标头,您将遇到相同的行为。这对于确保 Content-Length 与服务器应用后发送的内容的长度相匹配是必要的,例如压缩(如果 mod_deflate 处于活动状态)。

因此,在任何发送内容的请求中,您对该标头的更改都将无效。但是由于 Apache 甚至不查看 head-request 中的内容(仅是元数据),因此它不计算内容长度。这是有效的,因为 HEAD 请求没有任何正文,因此内容长度始终为零。

因此,您应该:
a)首先不要修改 content-length 标头
b)不要为 HEAD 请求发送一个

于 2013-11-03T17:20:04.417 回答