HTTP(3):HTTP报文内的HTTP信息

HTTP(3):HTTP报文内的HTTP信息

HTTP报文

用于HTTP协议交互的信息被称为报文。HTTP报文大致可分为报文首部和报文主体,两者由最初出现的空行(CR+LF)来划分。通常,并不一定要有报文主体。

报文首部:服务器端或客户端需要处理的请求或响应的内容及属性。

CR+LF:CR(Carriage Return,回车符)LF(Line Feed,换行符)

报文主体:应被发送的数据。

在这里插入图片描述

编码提升传输速率

HTTP传输数据是可以原样传输,也可以进行编码提升传输速率,通过编码能有效处理大量的访问请求。但是编码操作需要计算机完成,因此消耗更多的CPU资源。

报文主体和实体主体的差异

报文(message):是HTTP通信的基本单位,由8位组字节流组成,通过HTTP通信传输。

实体(entity):作为请求或响应的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成。

通常报文主体等于实体主体。只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异。

压缩传输的内容编码

内容编码指明应用在实体内容上的编码格式,并保持信息原样压缩。内容编码后的实体由客户端接收并负责解码。

常用内容编码:

  • gzip(GUN zip)
  • compress(UNIX 系统的标准压缩)
  • deflate(zlib)
  • identity(不进行编码)
分割发送的分开传输编码

在HTTP通信过程中,请求的编码实体资源尚未全部传输完成之前,浏览器无法显示请求页面。在传输大量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面。(懒加载是不是用了这个技术呢)

分块传输编码:将实体主体分成多个部分(块)。每一块都会用十六进制来标记块的大小。实体主体最后一块使用“0(CR+LF)”来标记。

发送多种数据的多部分对象集合

HTTP协议使用多部分对象集合方法,使得发送一份报文主体内可含有多类型实体。通常在图片或文本文件等上传时使用。

multipart/form-data:在web表单文件上传时使用。

multipart/byteranges:状态码206(partial Content,部分内容)响应报文包含了多个范围的内容时使用。

在HTTP报文中使用多部分对象集合时,需要在首部字段里加上Content-type。使用boundary字符串来划分多部分对象集合指明的各类实体。在boundary字符串指定的各个实体起始行之前插入“–”标记(例如:–AaB03x、–THIS_STRING_SEPARATES),而在多部分对象集合对应的字符串的最后插入“–”标记作为结束。

UU4HiV.png

获取部分内容的范围请求

场景:解决下载文件中断后无需重头下载,提供一种可恢复机制。所谓恢复是指能从之前下载中断处恢复下载。

要实现该功能需要制定下载的范围实体。制定范围发送的请求叫做范围请求(Range Request)。

对一份10000字节大小的资源,如果使用范围请求,可以只请求5001~10000字节内的资源。会用到首部字段Range来指定资源的byte范围。

指定5001~10000字节

Range: bytes=5001-10000

从一开始到3000字节和5000到7000字节的多重范围

Range: bytes=-3000, 5000-7000

针对范围请求,响应状态码为206 Partial Content。对于多重范围请求,响应会在首部字段Content-Type标明multipart/byteranges后返回响应报文。如果服务器端无法响应范围请求,则返回200 OK和完整实体内容。

内容协商

内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。内容协商会以响应资源的语言(中文网站和英文网站切换)、字符集、编码方式等作为判断的基准。

包含着请求报文中的某些字段(如下)就是判断基准:

  • Accept
  • Accept-Charset
  • Accept-Encoding
  • Accept-Language
  • Content-Language

三种类型:

服务器驱动协商:以请求的首部字段做参考,服务器端自动处理。

客户端驱动协商:用户在网页显示的可选列表中自行选择。

  • Content-Language

三种类型:

服务器驱动协商:以请求的首部字段做参考,服务器端自动处理。

客户端驱动协商:用户在网页显示的可选列表中自行选择。

透明协商:二者各自进行内容协商的一种方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值