Apache2:更改响应标头

时间:2013-11-03 17:12:20

标签: http-headers apache2 apache2-module

我正在使用我的ubuntu 12.04系统apache2并使用响应标头。我想更改http响应标头的行为,尤其是Content-Length标头。我尝试在ifModule mod_headers.c部分的apache2.conf中添加以下行:

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

如果我运行 curl -I localhost ,我得到预期的头字段 Content-Length:1338 (curl -I执行HEAD请求)。
如果我运行 curl -i ,则正确计算Content-Length。
在RFC2616中,描述了第9.4节,HEAD请求应该与响应GET请求而发送的信息相同。
有人可以解释我这种行为吗?!

1 个答案:

答案 0 :(得分:0)

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

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

因此,你应该:
a)不要在第一个位置修改内容长度标题 b)不为HEAD请求发送一个

相关问题