HTTP报文
用于HTTP协议交互的信息被称为HTTP报文,HTTP报文是由多行数据构成的字符串文本,其中,CR+LF用作换行。CR: Carriage Return,回车符,0x0d。LF: Line Feed,换行符, 0x0a。
报文结构
通常来说都是报文首部、报文主体构成。对于请求报文来说,其报文首部由请求行、请求首部字段、通用首部字段、实体首部字段和其他字段。相应报文由状态行、响应首部字段、通用首部字段、实体首部字段和其他字段组成。具体就不列举例子了。
- 请求行:包含用于请求的方法、URI和HTTP版本
- 状态行: 表明响应结果的状态码,原因短语,HTTP版本
- 首部字段: 请求和响应的各种条件和属性
- 其他: 可能包含RFC里未定义的首部,例如Cookie等。
报文主题和实体主体
报文: HTTP通信中的基本单位,由8位字节流组成
实体:作为请求或响应的有效载荷数据,其内容由实体首部和实体主体组成
压缩编码
gzip(GNU zip)、compress、deflate(zlib)、identity(不进行编码)
分割传送
传送大容量数据时,通过将数据分割,能够让浏览器逐步显示界面,这种编码方式被称为分块传输编码(Chunked Transfer Coding)
发送多种数据
multipart/form-data:表单上传时使用,需要注意的是boundary
和Conten-Type
字段以及最后的结束标志
multipart/byteranges:可指定请求的Content-Range
用来获取部分内容
内容协商
客户端和服务端对响应的资源内容进行交涉,进而提供给服务端最合适的资源。一个例子就是不同语言的网站的不同显示内容。
- Accept
- Accept-Charset
- Accept-Encoding
- Accept-Language
- Content-Language
网友评论