第3章 HTTP报文内的HTTP信息(1)报文头部、压缩传输的内容编码、Multipart

click –> 带着问题学习~

前面介绍了报文的整体结构,这篇重心放在报文的头部。

1. 报文

用于HTTP协议交互的信息叫做报文

  • 请求报文:由客户端发出的HTTP报文。
  • 响应报文:由服务端返回的HTTP报文。

请求报文:
请求报文

响应报文:
响应报文

2. 请求报文和响应报文的头部内容组成

  • 请求行:方法名、协议、协议版本、状态码、简短的解释语。
  • 响应行:协议、协议版本、状态码、简短的解释语。
  • 头部字段
  • 其他:可能包含HTTP RFC 里维定义的头部。(cookie

3.编码提升传输速率

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

    HTTP报文的主体用于请求传输和响应的实体主体。
    通常报文主体等于实体主体。只有当传输中进行编码操作时,实体主体才会发生响应的变化,导致两者产生差异。

    (1)什么是报文主体(message)?
    报文主体就是HTTP传输信息中的主体部分,是HTTP通信的基本单位,由8位组字节流组成。通过HTTP通信传输。

    (2)什么是实体主体(entity)?
    实体主体作为请求和响应的有效载荷数据被传输。

4.压缩传输的内容编码

(1)什么是内容编码?

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

(2)常用的编码格式

- gzip (GUN zip)
- compress (UNIX 系统的标准压缩)
- deflate (zlib)
- identity (不进行编码)

(3)分块传输编码

  • 由于请求的编码实体资源未全部接收完成之前,浏览器不会显示请求的页面。在请求大量数据时,将数据分块传输,能够让浏览器逐步的显示页面。这种把实体分块的编码叫做分块传输编码。

  • 分块传输编码会将实体主体分为多块,每块用16进制来标记块的大小,结尾用 0+ 换行 标记。

  • 使用分块传输编码会在客户端对实体主体进行解码。

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

发送一份报文可以包含多类型实体。多用于文件的上传。

多部分集合包含的对象如下;

  • multipart/form-data

    web表单上传时使用
    
  • multipart/byteranges

    响应报文包含了多个范围时使用
    

6.获取部分内容的范围请求 断点续传

要实现该功能需要制定下载的实体范围,这种制定范围发送请求叫做范围请求。
针对范围请求,服务器会返回状态码为206的报文,多重范围请求 响应会在头部 Content-Type 表明 multipart-byteranges 返回报文主体。如果服务端不支持范围请求则返回状态码200 OK并将所有报文一并返回。
执行范围时会使用头部字段 Range 来指定资源 byte 的范围。
Range格式:
5001-10000字节
Range : byte = 5001-10000
5000之后的
Range : byte = 5001-
0-3000字节,5001-10000字节
Range : byte=-3000,5001-10000

7.内容协商返回最合适的内容(类似于 Android 的国际化)

实现内容协商有三种方式:

  • 服务器启动协商
    以请求的头部字段作为参考在服务端自动处理

    头部字段
    Accpet
    Accpet-Charset
    Accpet-Encoding
    Accpet-Language
    Conent-Language
    
  • 客户端驱动协商
    用户从浏览器的可选列表中手动选择,还可以用JavaScript脚本在页面自动选择。
  • 透明协商
    服务端和客户端驱动的结合体。由服务端和客户端各自进行协商的一种方法。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值