前言:本篇文章主要参考自《图解HTTP》,在学习期间也查询过其他资料。仅作为个人的学习记录。
五.HTTP 首部
HTTP 首部字段过多,这里不一一介绍,对于常用的首部字段,在全文中会以 ①②③…等方式进行标注
故只在此介绍总体,大概情况.
1.HTTP 报文结构
在之前已经介绍过 HTTP 报文的结构,再次简单的回顾一遍.
图: HTTP 报文结构
HTTP 报文又分两类: 请求报文,响应报文.
而这两个普遍的区别在于首部字段的不同.
1)HTTP 请求报文
在请求中, HTTP 报文由首行(方法、 URI、 HTTP 版本)、 HTTP 首部字段(特有的请求首部字段)等部分构成。
2)HTTP 响应报文
在响应中, HTTP 报文由首行( HTTP 版本、 状态码(数字和原因短语)) 、HTTP 首部字段 (特有的响应首部字段)等部分构成
3)关于 HTTP 首部字段
HTTP 首部字段是构成 HTTP 报文的要素之一。 在客户端与服务器之间以 HTTP 协议进行通信的过程中, 无论是请求还是响应都会使用首部字段, 它能起到传递额外重要信息的作用。使用首部字段是为了给浏览器和服务器提供报文主体大小、 所使用的语言、 认证信息等内容。
图: 首部字段中可使用的附加信息较多
HTTP 首部字段根据实际用途被分为以下 4 种类型:
- 通用首部字段( General Header Fields): 请求报文和响应报文两方都会使用的首部。
- 请求首部字段( Request Header Fields): 从客户端向服务器端发送请求报文时使用的首部。 补充了请求的附加内容、 客户端信息、 响应内容相关优先级等信息。
- 响应首部字段( Response Header Fields): 从服务器端向客户端返回响应报文时使用的首部。 补充了响应的附加内容, 也会要求客户端附加额外的内容信息
- 实体首部字段( Entity Header Fields): 针对请求报文和响应报文的实体部分使用的首部。 补充了资源内容更新时间等与实体有关的信息。
2.HTTP/1.1 首部字段
1)通用首部字段
首部字段名 | 说明 |
---|---|
Cache-Control | 控制缓存的行为 |
Connection | 逐跳首部、 连接的管理 |
Date | 创建报文的日期时间 |
Pragma | 报文指令 |
Trailer | 报文末端的首部一览 |
Transfer-Encoding | 指定报文主体的传输编码方式 |
Upgrade | 升级为其他协议 |
Via | 代理服务器的相关信息 |
Warning | 错误通知 |
2)请求首部字段
首部字段名 | 说明 |
---|---|
Accept | 用户代理可处理的媒体类型 |
Accept-Charset | 优先的字符集 |
Accept-Encoding | 优先的内容编码 |
Accept-Language | 优先的语言(自然语言) |
Authorization | Web认证信息 |
Expect | 期待服务器的特定行为 |
From | 用户的电子邮箱地址 |
Host | 请求资源所在服务器 |
If-Match | 比较实体标记(ETag) |
If-Modified-Since | 比较资源的更新时间 |
If-None-Match | 比较实体标记(与 If-Match 相反) |
If-Range | 资源未更新时发送实体 Byte 的范围请求 |
If-Unmodified-Since | 比较资源的更新时间(与If-Modified-Since相反) |
Max-Forwards | 最大传输逐跳数 |
Proxy-Authorization | 代理服务器要求客户端的认证信息 |
Range | 实体的字节范围请求 |
Referer | 对请求中 URI 的原始获取方 |
TE | 传输编码的优先级 |
User-Agent | HTTP 客户端程序的信息 |
3)响应首部字段
首部字段名 | 说明 |
---|---|
Accept-Ranges | 是否接受字节范围请求 |
Age | 推算资源创建经过时间 |
ETag | 资源的匹配信息 |
Location | 令客户端重定向至指定URI |
Proxy-Authenticate | 代理服务器对客户端的认证信息 |
Retry-After | 对再次发起请求的时机要求 |
Server | HTTP服务器的安装信息 |
Vary | 代理服务器缓存的管理信息 |
WWW-Authenticate | 服务器对客户端的认证信息 |
4)实体首部字段
首部字段名 | 说明 |
---|---|
Allow | 资源可支持的HTTP方法 |
Content-Encoding | 实体主体适用的编码方式 |
Content-Language | 实体主体的自然语言 |
Content-Length | 实体主体的大小(单位: 字节) |
Content-Location | 替代对应资源的URI |
Content-MD5 | 实体主体的报文摘要 |
Content-Range | 实体主体的位置范围 |
Content-Type | 实体主体的媒体类型 |
Expires | 实体主体过期的日期时间 |
Last-Modified | 资源的最后修改日期时间 |