HTTP协议交互的信息被称为HTTP报文,请求端的HTTP报文叫做请求报文,响应端的叫做响应报文。
HTTP为了提升传输速率,其在传输数据时,按照数据原样进行压缩传输,相应地客户端会接受并解析内容编码后的实体。
在HTTP通信过程中,可以让大容量的数据进行分块分割传输,这方式能够让浏览器逐步显示页面。
HTTP采纳了多部分对象集合,故发送的一份报文主体内可含有多类型实体,不过需要在首部字段里加Content-type,并使用boundary字符串来划分多部分对象集合指明的各类实体,boundary字符串指定的各个实体的起始之前插入”–”标记,而在多部分对象集合对应的字符串的最后插入”–”标记作为结束,示例:
HTTP可以在请求首部那里指定范围来获取指定的内容。
Range:byte=5001-10000,获取从5001到10000这段字节。
Range:byte=5001,获取从5001之后全部的字节。
Range:byte=-3000,5000-7000,获取从0到3000这段字节,获取从5000到7000这段字节
以下会列出常见的几个HTTP状态码:
200表示正常处理请求,并成功返回正常的数据。
204表示正常处理请求,但没有资源可返回。
206表示正常处理请求,并返回请求那部分的资源数据。
301永久性的给请求资源分配了新的URI,故以后使用该资源需要现在所指的新URI。
302临时性的给请求资源分配了新的URI,这只是通知这次请求使用该新URI。
303明确通知请求采用GET方法且用该资源另一个URI发送。
304表示客户端发送附带条件的请求时(附带条件指的是If-Match,If-Modified-Since等),服务器允许请求访问资源,但未满足条件的请况。
307与302类似,是临时重定向。
400表示请求报文中存在语法错误。
401表示发送的请求需要有通过HTTP认证的认证信息,如果之前已进行过一次请求,则表示用户认证失败。
403表示请求资源的访问被服务器拒绝了(一般都是权限问题)。
404表示服务器上无法找到请求的资源。
500表示服务器端在执行请求时发生了错误。
503表示服务器暂时处于超负荷或正在进行停机维护,现在无法处理请求。