HTTP——报文和实体
本文为《图解HTTP》第三章摘录+总结。
HTTP报文本身是由多行数据构成的 字符串文本 ,由报文首部和报文主体构成,并不一定要有报文主体。首部是请求或响应的内容及属性,主体是应被发送的数据。
首先弄清两个概念, 报文 和 实体 。可将报文看作传输中的“箱子”,而实体是“箱子”里的“货物”,即我们真正想要传送给对方的东西本身,也就是数据。实体由实体首部和实体主体构成,实体首部主要是一些有关实体主体的描述性信息。
在实际中,通过编码来提升传输的速率。有两种编码方式:压缩传输的内容和分块传输。
HTTP协议中有一种被称为内容编码的功能可以对实体信息进行压缩,压缩后的实体由客户端接收并进行解码。
在传输大量内容时,通过把数据分割成多块,让浏览器逐步显示。这种编码方式被称为分块传输编码。
HTTP协议中采用 多部分对象集合 (Multipart)的方法,来容纳多份不同的类型的数据。发送的一份报文可含有 多类型实体 。通常是在图片或文本文件等上传时使用。Multipart集合包含的对象有:
首部字段Range用来指定资源内的byte范围。而使用了Range发送的请求被称为 范围请求 ,即只请求某个资源的一部分。用于应对网络中断的情况,可以从中断处继续加载,而不是从头开始。
针对范围请求,响应会返回状态码为206 Partial Content的响应报文。另外,对于多重范围请求,响应会在首部字段Content-Type标明multipart/byteranges后返回响应报文。
如服务器无法响应范围请求,则返回状态码200 OK和完整的实体内容。
同一个web网站可能存在多份相同内容的页面,例如英文版和中文版。当浏览器的默认语言为英语或中文时,web页面对应显示相应语言。这样的机制称为内容协商。内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为合适的资源。
包含在请求报文中的某些首部字段就是判断的基准:Accept、Accept-Charset、Accept-Encoding、Accept-Language、Content-Language。
内容协商技术有3种类型:
2023-08-29 广告