HTTP之Transfer-Encoding和Content-Encoding

Transfer-Encoding

Transfer-Encoding 消息首部指明了将 entity 安全传递给用户所采用的编码形式。

Transfer-Encoding 是一个逐跳传输消息首部,即仅应用于两个节点之间的消息传递,而不是所请求的资源本身。一个多节点连接中的每一段都可以应用不同的Transfer-Encoding 值。如果你想要将压缩后的数据应用于整个连接,那么请使用端到端传输消息首部 Content-Encoding 。

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Transfer-Encoding

Transfer-Encoding为chunked时,表示使用的分块传输编码。在数据的开头会使用16进制的数字表示数据长度,当数字为0的时候表示数据发送完毕。数据长度后面跟随CRLF(\r\n),数据的结尾也跟随着CRLF(\r\n)。

HTTP/1.1 200 OK\r\n

Content-Encoding: gzip\r\n

Content-Type: text/xml\r\n

Transfer-Encoding: chunked\r\n

Connection: keep-alive\r\n

\r\n

7\r\n

abcdefg\r\n

0\r\n

\r\n

Content-Encoding

Content-Encoding 是一个实体消息首部,用于对特定媒体类型的数据进行压缩。当这个首部出现的时候,它的值表示消息主体进行了何种方式的内容编码转换。这个消息首部用来告知客户端应该怎样解码才能获取在 Content-Type 中标示的媒体类型内容。

一般建议对数据尽可能地进行压缩,因此才有了这个消息首部的出现。不过对于特定类型的文件来说,比如jpeg图片文件,已经是进行过压缩的了。有时候再次进行额外的压缩无助于负载体积的减小,反而有可能会使其增大。

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Encoding

posted @ 2020-07-13 15:30  xiaoxiongfei  阅读(542)  评论(0)    收藏  举报