HTTP报文内的HTTP信息copyright《图解HTTP》读书笔记

  • HTTP报文message:用于HTTP协议交互的信息
    • 通常分为报文首部和报文主体,由空行(CR+LF)来划分。不过不一定要有报文主体
  • 请求报文和响应报文的结构
    • 请求报文
      • 请求行、各种首部字段(请求首部字段、通用首部字段、实体首部字段、其他)、报文主体
      • 请求行:包含用于请求的方法,请求URI和HTTP版本
    • 响应报文
      • 状态行、各种首部字段(响应首部字段、通用首部字段、实体首部字段、其他)、报文主体
      • 状态行:包含表明响应结果的状态码,原因短语和HTTP版本
    • 其他首部字段
      • 可能包含HTTP的RFC里未定义的首部,如Cookie
  • 编码操作:(传输过程中进行编码)提升传输速率
    • 报文主体与实体主体差异
      • __报文__是HTTP通信的基本单位,由8位组字节流组成,通过HTTP通信传输;__实体__是传输过程中被传输的补充项(有效载荷数据)
      • 通常报文主体等于实体主体。只有当传输中进行编码操作时,实体主体的内容才发生变化,导致与报文主体产生差异
    • 内容编码:压缩传输
      • 指明应用在实体主体上的编码格式,并保持实体信息原样压缩,内容编码后的实体由客户端接收并负责解码
      • 服务端将实体主体压缩,响应给客户端解码复原
      • 常用的内容编码
        • gzip:GNU zip
        • compress:UNIX系统的标准压缩
        • deflate:zlib
        • identity:不进行编码
    • 分块传输编码:分割发送 Chunked Transfer Coding
      • 将实体主体分成多块。每一块都会用十六进制来标记块的大小,而实体主体的最后一块会用“0并换行”来标记
      • 服务端将实体主体分块,响应给客户端解码复原
      • HTTP/1.1中的传输编码机制:只定义作用于分块传输编码中,在通信时按某种编码方式传输
  • 多部分对象集合Multipart:发送多种数据
    • MIME(Multipurpose Internet Mail Extensions,多用途因特网邮件扩展)
      • 允许邮件处理文本、图片、视频等多个不同类型的数据
      • MIME扩展中会使用一种称为 __多部分对象集合__的方法,来容纳多分不同类型的数据
    • HTTP协议中也采纳了类似MIME扩展中的 __多部分对象集合__方法,通常是资源上传时使用
      • multipart/form-data
        • 在Web表单文件上传时使用
      • multipart/byteranges
        • 状态码206(Partial Content部分内容)响应报文包含了多个范围的内容时使用
      • Content-type:Multipart;boundary=实体
      • 起始行:–实体;结束:–实体–
  • 范围请求:获取部分内容
    • 能从之前下载中断处恢复下载,指定范围发送的请求交范围请求range request
    • 首部字段Range指定资源的byte范围
      • 5001-10000字节,Range:bytes=5001-10000
      • 5001字节以后的全部,Range:bytes=5001-
      • 从一开始到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
    • 内容协商技术有三种类型
      • 服务器驱动协商
        • 原理:服务器以请求的首部字段为参考,在服务端自动处理
        • 问题:以浏览器发送的信息作为判定依据,不一定能筛选出最优内容
      • 客户端驱动协商
        • 原理:用户从浏览器显示的可选项列表中手动选择
        • 优势:可以利用JS脚本在Web页面上自动选择,比如按操作系统或浏览器类型自行切换PC版或移动版
      • 透明协商
        • 上述两种类型的结合体,两端各自进行内容协商
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值