HTTP结构的形式
- 请求报文和响应报文的组成形式:
- 请求行
- 请求头
- 空行
- 消息主体
请求行:
- 格式为
Method Request-URI HTTP-Version \r\n
请求头:
通用报头:既可以出现在请求报头,也可以出现在响应报头中
Date
:表示消息产生的日期和时间
Connection
:允许发送指定连接的选项,例如指定连接是连续的,或者指定“close”选项,通知服务器,在响应完成后,关闭连接
Cache-Control
:用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制)
请求报头:通知服务器关于客户端求求的信息
Host
:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机
User-Agent
:发送请求的浏览器类型、操作系统等信息
Accept
:客户端可识别的内容类型列表,用于指定客户端接收那些类型的信息
Accept-Encoding
:客户端可识别的数据编码
Accept-Language
:表示浏览器所支持的语言类型
Connection
:允许客户端和服务器指定与请求/响应连接有关的选项,例如这是为Keep-Alive则表示保持连接
Transfer-Encoding
:告知接收端为了保证报文的可靠传输,对报文采用了什么编码方式
响应头报文:用于服务器传递自身信息的响应
Location
:用于重定向接受者到一个新的位置,常用在更换域名的时候
Server
:包含可服务器用来处理请求的系统信息,与User-Agent请求报头是相对应的
实体报头:用来定义被传送资源的信息,既可以用于请求也可用于响应
Content-Type
:发送给接收者的实体正文的媒体类型
Content-Lenght
:实体正文的长度
Content-Language
:描述资源所用的自然语言,没有设置则该选项则认为实体内容将提供给所有的语言阅读
Content-Encoding
:实体报头被用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内容的编码,因而要获得Content-Type报头域中所引用的媒体类型,必须采用相应的解码机制
Last-Modified
:实体报头用于指示资源的最后修改日期和时间
Expires
:实体报头给出响应过期的日期和时间
空行:
http协议规定的格式,一般采用\r\n
消息主体
Content-Type=application/x-www-form-urlencoded
,定义为Key=value
格式Content-Type=application/json
,定义为序列化为的json
字符串Content-Type= multipart/form-data
,定义为表单数据提交
http
请求报文结构
http
响应报文结构