📜  HTTP 标头 |传输编码(1)

📅  最后修改于: 2023-12-03 15:31:19.929000             🧑  作者: Mango

HTTP 标头 | 传输编码

在HTTP请求和响应消息中,HTTP标头(Headers)是非常重要的一部分。HTTP标头允许HTTP消息传递元信息(header)给服务器或者客户端,例如传输编码。

传输编码

在HTTP/1.1之前,HTTP消息传输中采用内容长度来指定消息体的大小。但是,这种方式的缺点是在发送大文件时效率低下,端到端的实时性也会受到影响。

因此,HTTP/1.1引入了一个新的机制来优化HTTP消息传输效率,它被称为传输编码。传输编码是基于流传输的模式,可以使用一系列的数据块来传输HTTP消息,这样可以避免消息体全部传输后才进行处理的问题。

传输编码不仅仅可以提高HTTP消息传输的效率,而且也为一些特殊情况提供了支持,例如压缩。

常用的传输编码

在HTTP/1.1中,常用的传输编码包括:Chunked和Gzip。

Chunked编码

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编码

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编码,为不同的业务提供了不同的支持。