--- title: Transfer-Encoding slug: Web/HTTP/Headers/Transfer-Encoding tags: - 首部 translation_of: Web/HTTP/Headers/Transfer-Encoding ---
Transfer-Encoding
消息首部指明了将 {{Glossary("Entity header","entity")}} 安全传递给用户所采用的编码形式。
Transfer-Encoding
是一个逐跳传输消息首部,即仅应用于两个节点之间的消息传递,而不是所请求的资源本身。一个多节点连接中的每一段都可以应用不同的Transfer-Encoding
值。如果你想要将压缩后的数据应用于整个连接,那么请使用端到端传输消息首部 {{HTTPHeader("Content-Encoding")}} 。
当这个消息首部出现在 {{HTTPMethod("HEAD")}} 请求的响应中,而这样的响应没有消息体,那么它其实指的是应用在相应的 {{HTTPMethod("GET")}} 请求的应答的值。
Header type | {{Glossary("Response header")}} |
---|---|
{{Glossary("Forbidden header name")}} | yes |
Transfer-Encoding: chunked Transfer-Encoding: compress Transfer-Encoding: deflate Transfer-Encoding: gzip Transfer-Encoding: identity // Several values can be listed, separated by a comma Transfer-Encoding: gzip, chunked
chunked
\r\n
' ,之后是分块本身,后面也是'\r\n
' 。终止块是一个常规的分块,不同之处在于其长度为0。终止块后面是一个挂载(trailer),由一系列(或者为空)的实体消息首部构成。compress
deflate
gzip
x-gzip
指令。identity
分块编码主要应用于如下场景,即要传输大量的数据,但是在请求在没有被处理完之前响应的长度是无法获得的。例如,当需要用从数据库中查询获得的数据生成一个大的HTML表格的时候,或者需要传输大量的图片的时候。一个分块响应形式如下:
HTTP/1.1 200 OK Content-Type: text/plain Transfer-Encoding: chunked 7\r\n Mozilla\r\n 9\r\n Developer\r\n 7\r\n Network\r\n 0\r\n \r\n
Specification | Title |
---|---|
{{RFC("7230", "Transfer-Encoding", "3.3.1")}} | Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing |
{{Compat("http.headers.Transfer-Encoding")}}