HTTP 报文首部
1、HTTP 报文首部
HTTP 协议的请求和响应报文中必定包含 HTTP 首部。首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。
1)HTTP请求报文:在请求中,HTTP报文由方法、URI、HTTP版本、HTTP首部字段等部分组成。
2)HTTP响应报文:在响应中,HTTP报文由HTTP版本、状态码(数字和原因短语)、HTTP首部字段3部分组成。
在报文众多的字段当中,HTTP 首部字段包含的信息最为丰富。首部字段同时存在于请求和响应报文内,并涵盖 HTTP 报文相关的内容信息。
2、HTTP首部字段
1、概述:
在客户端与服务器之间以 HTTP 协议进行通信的过程中,无论是请求还是响应都会使用首部字段,它能起到传递额外重要信息的作用。
使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容。
HTTP 首部字段是由首部字段名和字段值构成的,中间用冒号“:” 分隔。
首部字段名: 字段值
例如,在 HTTP 首部中以 Content-T y pe 这个字段来表示报文主体的对象类型。
Content-Type: text/html
2、4 种 HTTP 首部字段类型:
1)通用首部字段(General Header Fields)
请求报文和响应报文两方都会使用的首部。
2)请求首部字段(Request Header Fields)
从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息
。
3)响应首部字段(Response Header Fields)
从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。
4)实体首部字段(Entity Header Fields)
针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。
3、End-to-end首部和Hop-by-hop首部
HTTP 首部字段将定义成缓存代理和非缓存代理的行为,分成 2 种类型。
1)端到端首部(End-to-end Header)
分在此类别中的首部会转发给请求 / 响应对应的最终接收目标,且必须保存在由缓存生成的响应中,另外规定它必须被转发。
2)逐跳首部(Hop-by -hop Header)
分在此类别中的首部只对单次转发有效,会因通过缓存或代理而不再转发。HTTP/1.1 和之后版本中,如果要使用 hop-by-hop 首部,需提供 Connection 首部字段。
下面列举了 HTTP/1.1 中的逐跳首部字段。除这 8 个首部字段之外,其他所有字段都属于端到端首部。
Connection
Keep-A live
Proxy -A uthenticate
Proxy -A uthorization
Trailer
TE
Transfer-Encoding
Upgrade
3、HTTP1.1通用首部字段
通用首部字段是指,请求报文和响应报文双方都会使用的首部。包含字段及作用如下:
1)Cache-Control:通过指定首部Cache-Control的指令,就可以操作缓存的工作机制。如no-cache,public等。首部字段 Cache-Control 能够控制缓存的行为。
2)Connection:主要有两个作用,控制不再转发给代理的首部字段、管理持久连接。
3)Data:首部字段data表明创建HTTP报文和日期。
4)pragma :报文指令。与http1.1之前的版本兼容
5)Trailer:首部字段Trailer会事先说明在报文主体后记录了哪些首部字段,可以应用在HTTP1.1版本分块传输编码时使用。
6)Transfer-Encoding:规定了传输报文主体时采用的编码方式
7)Upgrade:用于检测HTTP协议及其他协议是否可以使用更高版本进行通信
8)Via :追踪客户端与服务器之间的请求响应和响应报文的传输途径。还可以避免请求回环的发生。
9)Warning:告知用户一些与缓存相关问题的警告
4、请求首部字段
请求首部字段是从客户端往服务器端发送请求报文中所使用的字段,用于补充请求的附加信息、客户端信息、对响应内容相关优先级等内容。
5、响应首部字段
响应首部字段是由服务器向客户端返回响应报文中所使用的字段,用于补充响应的附加信息、服务器信息,以及对客户端的附加要求等信息。
6、实体首部字段
实体首部字段是包含在请求报文和响应报文中的实体部分所使用的首部,用于补充内容的更新时间等与实体信息相关的信息。
7、为Cookie服务的首部字段
1)机制:
Cookie的工作机制是用户识别及状态管理。web网站为了管理用户的状态会通过web浏览器把一些数据临时写入用户计算机内。接着当用户访问web网站时,可以通过通信方式取回之前发送的Cookie。
调用Cookie时,由于可校验Cookie的有效期,以及发送方的域、路径、协议等信息,所以正规发布的Cookie内的数据不会因来自其他 Web 站点和攻击者的攻击而泄露。
2)为Cookie服务的首部字段
字段 作用 首部类型
Set-Cookie 开始状态管理所使用的Cookie信息 响应首部字段
Cookie 服务器接收到的Cookie信息 请求首部字段
3)Set-Cookie
4)Cookie
Cookie: status=enable
首部字段Cookie会告知服务器,当客户端想获得HTTP状态管理支持时,就会在请求包中包含从服务器接收到的Cookie。接收多个Cookie时,同样可以以多个Cookie形式发送。