HTTP头字段在PHP输出中来自何处(除了header())

HTTP头字段在PHP输出中来自何处(除了header()),php,http-headers,Php,Http Headers,我有一个PHP脚本,可以读取文件并将其输出到客户端。这是一个CSS文件,所以我使用头()设置内容类型,内容长度和缓存控制。如果我添加了一个合成的头,我可以使用篡改数据看到它,因此它看起来基本上正常工作(并且浏览器可以很好地接收文件)。我不明白的是,我还看到了许多其他的标题(例如,过期),并且一些东西实际上改变了我的内容长度的值——大概是因为它是内容编码:gzip。在php.ini中,它有zlib.output\u compression=Off,因此我不确定在修改标题的最后一步中跳入了什么。有人

我有一个PHP脚本,可以读取文件并将其输出到客户端。这是一个CSS文件,所以我使用
头()
设置
内容类型
内容长度
缓存控制
。如果我添加了一个合成的头,我可以使用篡改数据看到它,因此它看起来基本上正常工作(并且浏览器可以很好地接收文件)。我不明白的是,我还看到了许多其他的标题(例如,
过期
),并且一些东西实际上改变了我的
内容长度的值
——大概是因为它是
内容编码:gzip
。在
php.ini
中,它有
zlib.output\u compression=Off
,因此我不确定在修改标题的最后一步中跳入了什么。有人能给我解释一下吗


谢谢您的时间。

这些标题来自web服务器。PHP会被调用来交付内容(以及任何附加的标题),但交付内容的是web服务器,它使用自己的规则和配置设置。

感谢您的快速响应。因此,设置最小的头并让web服务器将其打包成有效的HTTP响应是完全可以接受的/正常的?@Jes完全取决于您想要做什么!通常,答案是肯定的:web服务器通常提供健康的默认标题。但是在某些情况下可能需要
内容类型
缓存控制。例如,如果在以.PHP结尾的PHP脚本中动态生成CSS样式表,则需要随附
text/CSS
内容类型,否则Firefox不会接受它。这要视情况而定。