这些额外的HTTP标头来自哪里?

Sta*_*ann 13 php http nginx http-headers

当我简单地回复php文件中的内容时,我不会故意发送任何标题,但是当我查看firebug响应时,无论如何都会出现一些默认标题:

响应标头:

HTTP/1.1 200 OK
服务器:nginx
日期:星期四,2011年6月23日19:33:51 GMT
Content-Type:text/html
Transfer-Encoding:chunked
Connection:keep-alive
Vary:Accept-Encoding
X-Powered-By:PHP /5.3.6-6~dotdeb.1
到期日:1981年11月19日星期四08:52:00 GMT
Cache-Control:无存储,无缓存,必须重新验证,后检查= 0,预检查= 0
Pragma:no-cache
Content-Encoding:gzip

我很好奇 - 这些默认响应标头是由服务器(nginx)还是由PHP设置的?

Jef*_*Pry 8

我相信它是两者的结合......你可以说"X-Powered-By:PHP/5.3.6-6~dotdeb.1"来自PHP,"Server:nginx"来自NGINX.

您可以在PHP中更改标头,如下所示:

<?php
    header("HTTP/1.0 404 Not Found");
?>
Run Code Online (Sandbox Code Playgroud)

gzip头文件肯定来自NGINX,因为它将输出(html)压缩到浏览器.PHP可以通过调用上面的函数来"添加"到头文件中.然后,服务器将其与PHP标头组合并提供请求.

这取决于您的服务器PHP标头是否优先于服务器标头.

希望这可以帮助.