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

乔纳·休伦

我觉得我要问这样一个简单的问题最终会很尴尬,但是我已经研究了好几天,并且无法提供任何有用的信息。

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

我知道可以使用PHP和Java Servlet处理标头。但是,响应标头的存在和内容是HTTP的基础,因此应该存在一种无需使用外部技术即可编辑响应标头的方法,不是吗?

巴里·波拉德

某些标题是自动设置的。它们是HTTP规范的一部分,服务器会为您处理。这就是Web服务器的用途,也是为什么它不同于FTP服务器或文件共享的原因。例如,Content-Length可以由Web服务器轻松计算,并且需要进行设置,以便服务器可以做到。

某些其他标头是根据config设置的。Apache通常会加载一个主要的配置文件(通常称为httpd.conf或apache2.conf),但是,为了将该文件保存为一个麻烦的文件,通常会从该文件中加载其他文件。这些文件只是带有配置文本行以更改服务器行为的文本文件。其他Web服务器可能使用XML配置文件,并且可能具有GUI来控制配置(例如IIS)

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

最后,您可以在服务器中显式设置标头(在Apache中,使用mod_headers模块即可完成)。这对于添加到浏览器中的新功能(例如HSTS,CSP或HPKP)很有用,在这些功能中,服务器不需要执行任何操作,而只需添加标头,客户端(例如Web浏览器)便知道如何使用它们。例如,可以通过将以下配置添加到httpd.conf中来添加JonahHuron标头:

Header always set JonahHuron "Some Value"

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

服务器无法识别HTTP标头SOAPAction的值

如何在HTTP响应中设置标头?

如何使用Golang服务器检查隐式设置的HTTP标头?

如何使用HTTP“主机”标头(使用GoLang)定位特定的应用服务器

如何将CORS标头设置为内部服务器错误响应?

我的问题是“发送HTTP标头后服务器无法设置状态”。

发送HTTP标头后服务器无法设置状态-Web API CORS

如何使用Spray RestAPI从服务器端获取HTTP请求标头信息

如何为Spring Boot应用程序设置自定义Http标头“服务器”

IIS之后的Kestrel的“服务器”响应标头

如何从服务器响应角度2中读取内容处置标头

如何设置react-dom / server renderToString传递给graphql服务器的标头?

使用akka http,如何将请求标头注入服务器中的传入路由?

服务器响应的.NET标头

IE11不会设置x-cfrtoken HTTP标头,除非使用InPrivate窗口,否则将导致服务器以HTTP 403 Access Denied进行响应

无法获得任何响应-发送HTTP标头后,服务器无法附加标头

发送标头后无法设置标头。:Raspbian Web服务器上的Sendgrid邮件响应

如何在不使用自定义服务器的情况下在Next.js中设置自定义HTTP响应标头?

设置HTTP标头以使用闪亮的服务器和Nginx进行缓存

监视出站服务器http标头信息?

MVC4-发送HTTP标头后,服务器无法设置状态

从libevent中的HTTP服务器响应获取所有HTTP标头

更改Apache httpd“服务器:” HTTP标头

HTTP响应标头,用于识别响应请求的实际服务器

在行命令上发送HTTP标头后,服务器无法设置内容类型

当服务器仅从请求中读取标头时,Http 客户端没有收到响应

发送 HTTP 标头后,间歇性服务器无法设置状态

返回服务器可用内容类型的 HTTP 标头

如何解决错误?“服务器无法识别 HTTP 标头 SOAPAction 的值”