TE
用法
TE 头部让客户端能够向服务器传达传输编码偏好。服务器利用这些信息为响应正文的 Transfer-Encoding 选择合适的编码。
在 HTTP/1.1 中,chunked 传输编码始终被隐式支持,无需在 TE 头部中列出。该头部主要有两个用途:声明对在传输层应用的额外压缩算法(gzip、deflate、compress)的支持,以及表示对 Trailer 字段的支持。
trailers 值尤其重要。若客户端未声明 TE: trailers,即使响应使用 chunked 编码,服务器也无法保证客户端会处理 trailer 字段。Trailer 字段携带诸如校验和或数字签名之类的元数据,附加在消息正文之后。
每个编码指令都接受一个可选的质量值(q),范围从 0 到 1,其中较高的值表示更强的偏好。当不存在质量值时,服务器会将偏好视为 1。
注意
在 HTTP/2 和 HTTP/3 中,TE 头部唯一接受的值是 trailers。传输层编码由协议分帧层处理。
trailers
trailers 指令表示客户端接受 chunked 传输编码中的 Trailer 字段。此值不参与质量值排序。
gzip
gzip 指令表示客户端在传输层支持带有 32 位 CRC 的 Lempel-Ziv 编码(LZ77)。
deflate
deflate 指令表示客户端在传输层支持 zlib 压缩的数据。
compress
compress 指令表示客户端在传输层支持 Lempel-Ziv-Welch(LZW)压缩。
q (quality value)
q 参数为每种编码偏好分配一个相对权重。值范围从 0(不可接受)到 1(最优先)。服务器使用质量值来选择最佳的传输编码。
示例
客户端声明支持 trailer 字段和 deflate 传输编码。质量值 0.5 使 deflate 相比其他所列编码的隐式默认值 1 具有更低的优先级。
TE: trailers, deflate;q=0.5
客户端偏好 gzip 传输编码,同时也以较低优先级接受 compress 传输。
TE: gzip, compress;q=0.7
客户端仅表示支持 trailer。这是与 HTTP/2 连接搭配使用的标准形式。
TE: trailers