•内容编码
HTTP应用程序有时在发送之前需要对内容进行编码。
•内容编码过程:
1)网站服务器生成原始响应报文,其中有原始的Content-Type和Content-Length首部。
2)内容编码服务器创建编码后的报文。编码后同样有Content-Type和Content-Length。内容编码服务器在编码后的报文中增加Content-Encoding首部,这样接收的应用程序就可以进行解码了。
3)接收程序得到编码后的报文,进行解码,获得原始报文。
在这个例子中,通过gzip内容编码函数对HTML页面处理之后,得到一个更小的、压缩的主体。经过网络发送的压缩的主体,并打上了gzip压缩的标志。接收的客户端使用gzip解码器对实体进行解压缩。
•一个包含编码的响应片段:
HTTP/1.1 200 ok
Date:Fri,05 Nov 1999 22:35:15 GMT
Server:Apache/1.2.4
Content-Length:6096
Content-Type:image/gif
Content-Encoding:gzip
[……]
•内容编码类型:
表152 内容编码代号
-------------------------------------------------------------------------------------------
Content-Encoding值 描述
-------------------------------------------------------------------------------------------
gzip 表明实体采用GNU zip编码
deflate 表明试图是用zlib的格式压缩的
identity 表明没有对实体进行编码。
-------------------------------------------------------------------------------------------
•Accept-Encoding首部:
毫无疑问,我们不希望服务器用客户端无法解码的方式来对内容进行编码。为了避免服务器使用客户端不支持的编码方式,客户端就把自己支持的内容编码方式列表放在请求的Accept-Encoding首部里发出去。如果HTTP请求中没有包含Accept-Encoding首部,服务器就可以假设客户端能够接受任何编码方式。
服务器使用gzip对图像进行压缩,以便在他和客户端之间的狭窄网络连接上传送一个较小的文件,这样可以节约网络快带和客户端等待的时间。不过,客户端在收到图像之后,还需要花费时间进行解压缩。