📅  最后修改于: 2023-12-03 15:31:19.929000             🧑  作者: Mango
在HTTP请求和响应消息中,HTTP标头(Headers)是非常重要的一部分。HTTP标头允许HTTP消息传递元信息(header)给服务器或者客户端,例如传输编码。
在HTTP/1.1之前,HTTP消息传输中采用内容长度来指定消息体的大小。但是,这种方式的缺点是在发送大文件时效率低下,端到端的实时性也会受到影响。
因此,HTTP/1.1引入了一个新的机制来优化HTTP消息传输效率,它被称为传输编码。传输编码是基于流传输的模式,可以使用一系列的数据块来传输HTTP消息,这样可以避免消息体全部传输后才进行处理的问题。
传输编码不仅仅可以提高HTTP消息传输的效率,而且也为一些特殊情况提供了支持,例如压缩。
在HTTP/1.1中,常用的传输编码包括:Chunked和Gzip。
Chunked编码被用来将一个包含长度未知内容的实体分割成多个细小的块(chunk)。
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/plain
25
This is the data in the first chunk
1C
and this is the second one
3
con
8
sequence
0
上面的HTTP响应消息使用chunked传输编码,首先表明使用chunked传输编码,并且Content-Type为text/plain。然后通过多个chunk传输数据,每个chunk的结束使用CRLF(Carriage-Return,Line-Feed)表示,多个chunk间用CRLF分隔。
Gzip编码是一种文件压缩算法,将HTTP消息体进行压缩后,再进行传输。
HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Type: text/plain
<gzip encoded data>
上面的HTTP响应消息通过Content-Encoding表明使用gzip编码,然后通过gzip压缩后的数据传输文本数据,必须在接收端进行解压缩后才能正确使用。
HTTP标头的传输编码在HTTP/1.1中得到了逐渐推广和使用。通过使用传输编码,可以提高HTTP消息传输效率,同时也使得HTTP消息传输更加灵活和高效。常用的传输编码包括Chunked编码和Gzip编码,为不同的业务提供了不同的支持。