gpt4 book ai didi

apache - 服务器如何设置 HTTP 响应头?

转载 作者:可可西里 更新时间:2023-11-01 15:16:30 30 4
gpt4 key购买 nike

我觉得我会因为问这样一个简单的问题而感到尴尬,但我已经研究了好几天了,找不到任何有用的信息。

什么决定了服务器发送的 HTTP 响应 header ?如果我控制服务器(如果我们需要具体性,比如说 Apache),那么我可以编辑什么文件来更改响应 header ?例如,要将其设置为包含 Content-Length 而不是 Transfer-Encoding: chunked

我知道 PHP 和 Java Servlet 可用于操作 header 。不过,响应 header 的存在和内容是 HTTP 的基础,因此应该存在一种无需使用外部技术即可编辑这些 header 的方法,不是吗?

最佳答案

某些标题是自动设置的。它们是 HTTP 规范的一部分,服务器会为您处理它们。这就是 Web 服务器的用途,以及它不同于 FTP 服务器或文件共享的原因。例如,Content-Length 很容易由网络服务器计算出来,需要进行设置,以便服务器自行处理。

某些其他 header 是根据配置设置的。 Apache 通常会加载一个主配置文件(通常称为 httpd.conf 或 apache2.conf),但随后,为了避免这个文件陷入困惑,它通常会从中加载其他文件。这些文件只是带有配置文本行的文本文件,用于更改服务器的行为。其他网络服务器可能使用 XML 配置文件,并且可能有一个 GUI 来控制配置(例如 IIS)

因此,对于某些 header ,您可能没有显式设置 header 值,但您基本上配置了服务器,然后它使用该配置来确定要发送的适当 header 。例如,您可以将服务器配置为 gzip 某些文件(例如,文本文件而不是已经压缩的 jpg)。在 Apache 中,这是由 mod_deflate module 处理的。以及它给你的配置选项。一旦将适当的配置添加到服务器配置中,服务器将进行必要的处理(例如,是否对文件进行 gzip 取决于类型),然后自动添加 header 。所以 Apache 模块基本上是改变服务器工作方式的东西,这可能会也可能不会也设置 header 。另一个示例是发送缓存 header 以告诉浏览器缓存文件多长时间。这是通过添加 mod_expiries module 来控制的。以及它允许​​的所有配置选项。虽然其中一些 header 可能是硬编码的(例如 Cache-Control),但其他 header 依赖于 Apache 进行计算(例如 Expires),因此最好使用该模块根据您的配置为您执行此操作。

最后,您可以在服务器中显式设置 header (在 Apache 中,这是使用 mod_headers 模块完成的)。这对于添加到浏览器的新功能非常有用,例如(例如 HSTS、CSP 或 HPKP),在这些浏览器中,服务器不需要做任何事情,只需添加 header ,客户端(例如网络浏览器)就知道如何处理它们。例如,您可以通过将此配置添加到 httpd.conf 来添加 JonahHuron header :

Header always set JonahHuron "Some Value"

至于是否使用该 header 完全取决于接收响应的程序。

关于apache - 服务器如何设置 HTTP 响应头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35564735/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com