避免HEAD响应中的内容长度

kra*_*ait 5 http http-headers

对于正好的HEAD请求(例如,当处理动态生成的资源时),Content-Length响应头通常很昂贵,但在完成生成GET响应主体所需的工作之后可能基本上是"免费的".

当在响应GET请求时提供Content-Length(而不是chunked响应)是合理的,但是对于相应的HEAD请求计算Content-Length是不合理或慢的,HEAD响应是否允许:

  • 完全省略Content-Length标题?
  • Transfer-Encoding: chunked即使GET响应会有响应,也会回应Content-Length

相关W3C规范指示HEAD请求"应该"( "必须")具有相同的报头进行响应; GET响应中使用Content-Length值得违反前面提到的"SHOULD",或者是两个响应都发送Transfer-Encoding: chunked标题的唯一合理选择是清洁度,并且通常是次要的,总传输大小节省?

kra*_*ait 7

感谢 @julian-reschke 的提示,rfc-7231表明:

服务器应该发送与如果请求是 GET 则发送相同的头字段来响应 HEAD 请求,除了可以省略有效负载头字段(第 3.3 节)。

根据同一文档的第 3.3 节,有效负载标头字段包括:

  • 内容长度
  • 内容范围
  • 预告片
  • 传输编码