HTTP报文:用于HTTP协议交互的信息,客户端的HTTP报文叫作 请求报文,响应端的叫作 响应报文web
本质:是由多行(用CR+LF做换行符)数据构成的字符串文本浏览器
注:CR:回车,打印针回到行首 LF:换行,打印针移至下一行服务器
构成:报文首部、报文主体ide
报文首部:服务器端或客户端需处理的请求或响应的内容及属性网站
报文主体:应被发送的数据编码
请求报文(上) 响应报文(下)spa
请求行:请求的方法、请求URI、HTTP版本orm
状态行:响应结果状态码、缘由短语、HTTP版本视频
首部字段:表示请求和响应的各类条件和属性的各种首部,通常有四种(见图)对象
其余:包含HTTP的RFC里未定义的首部(Cookie等)
HTTP中的编码
HTTP中能够直接传输数据,也能够编码后进行传输,编码的方法能够有效地处理大量的访问请求,可是编码过程须要计算机来完成,所以会消耗更多的CPU等资源
报文:HTTP通讯中的基本单位,由8位组字节流组成,经过HTTP通讯传输
实体:做为请求或响应的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成
报文的主体用于传输请求或响应的实体主体,一般,报文主体等于实体主体,只有当传输中进行编码操做时,实体主体的内容发生变化,才致使它和报文主体产生差别
HTTP中的内容编码能够保持实体信息原样进行压缩,内容编码后的实体由客户端接收并负责解码
经常使用的内容编码:gzip compress deflate identity(不进行编码)
传输编码机制:在通讯时按某种编码方式传输,但只定义 做用于分块传输编码中
分块传输编码:传输大容量数据时,经过把数据分割成多块,可以让浏览器逐步显示页面
邮件中的MIME机制:多用途因特网邮件扩展,支持发送多种类型的文件,如邮件,文本,图片,视频等,由于使用一种称为多部分对象集合的方法
多部分对象集合:HTTP中也采用了多部分集合,发送的一份报文主体内可含有多类型实体,其中包含的对象以下:
multipart/form-data:在web表单文件上传时使用
multipart/byteranges:状态码206(部份内容),响应报文包含了多个范围的内容时使用
HTTP获取部份内容请求
在请求头部加上Range划定请求范围
例如:Range:bytes=5001-10000 5001-10000字节
Range:bytes=5001- 5001至后面所有的字节
Range:bytes=-3000,5000-7000 一开始到3000字节和5000到7000字节
返回状态码的206响应报文,若服务器没法响应范围请求,则会返回状态码200 OK和完整的实体内容
HTTP内容协商
同一个web网站有可能会有多分内容相同的页面,好比英语版和中文版,当浏览器的默认语言为英语或中文,访问相同的URI的web页面时会显示对应的英语版或中文版页面,这样的机制称为 内容协商
判断基准:响应资源的语言、字符集、编码方式等
首部字段:Accept
Accept-Charset
Accept-Encoding
Accept-Language
Content-Language
内容协商的技术:
服务器驱动协商:由服务器端进行内容筛选
客户端驱动协商:由客户端进行内容筛选,用户从可选列表中手动选择,也可利用Javascript进行选择
透明协商:由服务器端和客户端各自进行内容协商