第15章 实体和编码

来源:互联网 发布:2016怎么做好淘宝 编辑:程序博客网 时间:2024/06/05 05:35

1 报文实体:

1 实体首部+实体主体,两部分之间采用CRLF分隔

2 基本实体首部字段:

  • Content-Type
  • Content-Length
  • Content-Language
  • Content-Encoding
  • Content-Location
  • Content-Range 范围请求时用
  • Content-MD5
  • Last-Modified
  • Expires
  • Allow
  • ETag
  • Cache-Control

2 检测截尾

1 Content-Length来检测报文截尾;UA在接收且检测到无效长度时通知用户

2 关闭连接的办法对于持久连接并不适用:分块编码 -> 零字节块结尾

3 规则:

  1. 如果报文不允许带主体,则忽略Content-Length,如HEAD相应
  2. 如果报文有Transfer-Encoding首部,则由“零字节块”结尾
  3. 如果有Content-Length而没有Transfer-Encoding,以Content-Length为准;如果有Content-Length且有Transfer-Encoding,以Transfer-Encoding为准
  4. 如果使用了multipart/byteranges,且无Content-Length,则报文每个部分单独说明自己长度
  5. 如果以上规则都不匹配,则已关闭连接表示

3 编码

Content-MD5,是在对内容进行了内容编码之后,传输编码之前计算的:

内容编码-> MD5计算 ->

3.1 内容编码:作用于实体
  1. gzip  通常效率最高
  2. compress
  3. deflate
  4. identity
3.2 传输编码:作用于整个报文

只有一种类型:分开编码 chunk

拖挂:将报文开始传输时不缺定的首部,放在最后一个分块(零字节块)之后传输

非HTTP1.1的服务器收到经传输编码的报文,返回201 Unimplemented状态码

4 过期

4.1 Expires首部

标识过期时间,使用相对时间:文档离开Server之后算起的总计时间

4.2 条件请求

验证码分类:

  1. 弱验证码:比如大小/最后修改时间(1s内可能修改多次)
  2. 强验证码:ETag/MD5
5 范围请求:断点续传!

Range:bytes=4000-

表示已经收到4000字节,从此后开始传输

6 差异编码

If-Not-Match  ETag

差异生成器