HTTP

HyperText Transfer Protocol 超文本传输协议   应用层通讯协议浏览器

采用请求/响应模型,一个客户端和服务器端请求和应答的标准(TCP,默认端口80)。HTTPS承载于TLS或SSL协议层之上。
缓存

头域

HTTP的头域包括通用头请求头响应头实体头四个部分服务器

客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的相似于MIME的消息结构。优化

请求报文格式:请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体编码

服务器以一个状态行做为响应,响应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。url

应答报文格式: 状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体spa

通用头

包含请求和响应消息都支持的头域,通用头域包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。.net

  1. Cache-Control头域
    指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另外一个消息处理过程当中的缓存处理过程。
    请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached;
    响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。
    public 响应可被任何缓存区缓存
    private 对于单个用户的整个或部分响应消息,不能被共享缓存处理。这容许服务器仅仅描述当用户的部分响应消息,此响应消息对于其余用户的请求无效
    no-cache 请求或响应消息不能缓存
    no-store 在请求消息中发送将使得请求和响应消息都不使用缓存。
    max-age 指示客户机能够接收生存期不大于指定时间(以秒为单位)的响应
    min-fresh 指示客户机能够接收响应时间小于当前时间加上指定时间的响应
    max-stale 客户机能够接收超出超时期间的响应消息。若是指定max-stale的值,那么客户机能够接收超出超时期指定值以内的响应消息。
  2. Date头域
    表示消息发送的时间(世界标准时),时间的描述格式由rfc822定义。 
    eg:  Date:Mon,31Dec200104:25:57GMT。orm

  3. Pragma头域
    用来包含实现特定的指令,最经常使用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache-Control:no-cache相同。blog

请求头

容许客户端向服务器传递关于请求或者关于客户机的附加信息。包含: Accept、Accept-Charset、Accept-Encoding、Accept-Language、Authorization、From、Host、If-Modified-Since、If-Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、Max-Forwards、Proxy-Authorization、Range、Referer、User-Agent。

  1. Host头域: 指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置
  2. Referer头域: 容许客户端指定请求uri的源资源地址,这能够容许服务器生成回退链表,可用来登录、优化cache等
  3. Range头域: 指定第一个字节的位置和最后一个字节的位置。
     格式: Range:(unit=first byte pos)-[last byte pos] (在断点下载时 Range 与 实体头的Content-Range 合用)
  4. User-Agent头域: 发出请求的用户信息。(浏览器信息等)

响应头

容许服务器传递不能放在状态行的附加信息。包含Age、Location、Proxy-Authenticate、Public、Retry-After、Server、Vary、Warning、WWW-Authenticate

  1. Location响应头: 用于重定向接收者到一个新URI地址。
  2. Server响应头: 包含处理请求的原始服务器的软件信息

实体头

请求消息和响应消息均可以包含实体信息,实体信息通常由实体头域和实体组成。实体头域包含关于实体的原信息,实体头包括Allow、Content-Base、Content-Encoding、Content-Language、Content-Length(实际传送的字节数)、Content-Location、Content-MD五、Content-Range(传送的范围,在断点续传中与请求头中的Range合用)、Content-Type、Etag、Expires、Last-Modified、extension-header。
(实体能够是一个通过编码的字节流,它的编码方式由Content-Encoding或Content-Type定义,它的长度由Content-Length或Content-Range定义)

  1. Content-Type实体头: 用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实体介质类型,或GET方法发送的请求介质类型
  2. Content-Range实体头:  指定整个实体中的一部分的插入位置,也指示了整个实体的长度; 在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。
    格式:Content-Range: bytes (unit first byte pos) - [last byte pos]/[entity legth] 
    eg:  传送头500个字节次字段的形式: Content-Range: bytes 0-499/1234;
  3. Last-modified实体头: 指定服务器上保存内容的最后修订时间

 

 

引贴: http断点续传原理:http头 Range、Content-Range

相关文章
相关标签/搜索