三、HTTP报文内的HTTP信息

105 阅读4分钟

HTTP报文内的HTTP信息

HTTP报文基本信息

  • 无论是请求报文还是响应报文,都由两部分组成:报文首部和报文主体。这两部分空格隔开
  • 请求报文的首部组成部分:请求行、请求首部字段、通用首部字段、实体首部字段和其他信息
  • 响应报文的首部组成部分:响应行、响应首部字段、通用首部字段、实体首部字段和其他信息

HTTP报文传输

  • HTTP报文可以原样传输,也可以编码传输。编码传输效率更高
  • HTTP报文编码格式有:gzip、compress等压缩算法
  • HTTP报文传输时使用分块传输编码技术,报文被分成一块一块进行传输,在界面逐渐展示

请求首部字段

Accept字段

  • Accept字段表明客户端可以处理的媒体类型
  • Accept字段后面可以有多个值,之间用逗号隔开
  • Accept字段后面还可以指定媒体类型优先级,使用q=来指定。优先级范围是0-1,默认是1。 媒体类型与优先级之间用分号连接,表示一组
  • Accept-Encoding表明压缩类型
  • Accept-Language表明语言类型
  • Accept-Charset表明字符集

Authorization字段

  • Authorization是认证信息,如果没有认证信息,服务端返回401响应码

From字段

  • From字段后面是邮箱地址

Host字段

  • Host后面是详细域名或者IP+PORT
  • 因为存在一台服务器上有多个虚拟主机的情况,所以光指定一个IP不够,还需要具体的域名或者端口

If-xxx字段

  • 这些格式的字段是条件请求,服务端接收到请求后,判断条件为真才会执行

Max-Forwards字段

  • Max-Forwards字段表明请求可以经过多个服务器
  • 这个字段一般用于定位源服务器没有收到请求的网络问题

Range字段

  • Range字段用于范围请求,返回响应内的资源

Referer字段

  • Referer字段是完整的URI,即请求的资源

Proxy-Authorization字段

  • Proxy-Authorization字段是代理服务器要求的认证信息字段

User-Agent字段

  • User-Agent字段是指明浏览器种类的字段

响应首部字段

Accept-Ranges字段

  • Accept-Ranges为none表示不支持范围请求,为byte表示支持

Age字段

  • Age字段表示响应生成已经过了多久时间

Location字段

  • Location字段表示重定向后资源的新地址

Proxy-Authenticate字段

  • Proxy-Authenticate把代理服务器要求的认证信息发送给客户端

Retry-After字段

  • Retry-After字段告知客户端应在多久后重试

WWW-Authenticate字段

  • 告知客户端请求资源需要的认证信息

Vary字段

  • 告知代理服务器,如果请求报文中,Vary指定的字段的指与缓存服务器中资源中该字段的值相同,则将此缓存中的资源返回,否则访问源服务器

范围请求

  • 范围请求指http请求一次传输部分资源
  • 范围请求在面临传输中断,在中断处继续开启传输时,非常有用
  • 客户端和服务器是否支持范围请求,要看Range字段
  • 如果不支持,报文首部没有Range字段,或者Range: none; 如果支持,报文首部:Range: byte
  • Range字段的范围如果超出资源大小,服务端返回416响应码
  • Range字段的范围正常,服务端返回206响应码
  • 如果不支持范围请求,但是客户端发送范围请求,服务端会将资源全部返回,并且响应200

内容协商

  • 内容协商指针对同一个URI,服务端根据语言,编码要求,返回不同格式的响应内容
  • 内容协商的字段有:Accept、Accept-Language、Accept-Encode等
  • 服务端协商指客户端发送默认的格式,这些格式在客户端界面不能主动选择,服务端按照格式返回
  • 客户端协商指客户端可以选择返回格式,选定后发送给服务端