三、HTTP报文内的HTTP信息
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字段
Host字段
- Host后面是详细域名或者IP+PORT
- 因为存在一台服务器上有多个虚拟主机的情况,所以光指定一个IP不够,还需要具体的域名或者端口
If-xxx字段
- 这些格式的字段是条件请求,服务端接收到请求后,判断条件为真才会执行
Max-Forwards字段
- Max-Forwards字段表明请求可以经过多个服务器
- 这个字段一般用于定位源服务器没有收到请求的网络问题
Range字段
Referer字段
Proxy-Authorization字段
- Proxy-Authorization字段是代理服务器要求的认证信息字段
User-Agent字段
响应首部字段
Accept-Ranges字段
- Accept-Ranges为none表示不支持范围请求,为byte表示支持
Age字段
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等
- 服务端协商指客户端发送默认的格式,这些格式在客户端界面不能主动选择,服务端按照格式返回
- 客户端协商指客户端可以选择返回格式,选定后发送给服务端