HTTP头部信息(HTTP Header)用于传输HTTP请求和响应中的各种元数据。它通常由一个名称 和一个值组成,并被连成一行。HTTP头部可以分为通用头部、请求头部、响应头部和实体头部四个部分。
通用头部
通用头部是指用于请求和响应的通用信息和控制选项,具有通用性。通用头部可以出现在HTTP请求和HTTP响应中,它们并不与具体的请求或响应对应,而是对所有请求和响应都起作用。通用头部有以下几个字段:
- Cache-Control: 用于控制缓存的行为,具体值有max-age(最长缓存时间)、no-cache(不使用缓存)、no-store(不缓存)等。
- Connection: 用于控制是否保持连接以及长/短连接,常见属性有keep-alive和close。
- Date: 用于指定报文创建时间。
- Pragma: 用于向下兼容HTTP/1.0的头部,现已基本废弃。
- Trailer: 表示报文的尾部可以包含哪些字段。
- Transfer-Encoding: 表示传输数据的编码方式,如chunked(分块编码)等。
- Upgrade: 在客户端请求和服务器响应中表示要升级使用的协议和版本。
请求头部
请求头部包含有关客户端请求的信息,用于向服务器传达各种请求信息,具体字段有:
- Accept: 指定可接受的响应值类型,如text/plain、application/json等。
- Accept-Encoding: 指定可接受的内容编码方式,如gzip、deflate等。
- Authorization: 在发送请求时用于传递身份验证信息。
- Host: 指定请求目标的主机名和端口号。
- User-Agent: 标识浏览器或客户端类型及版本信息。
- Referer: 请求来源地址,需要注意Referer的安全性。
响应头部
响应头部包含一些与服务器响应有关的信息,用于描述其元数据和选项,具体字段有:
- Content-Encoding: 表示响应内容的编码方式,如gzip、deflate等。
- Content-Length: 表示响应的字节数。
- Content-Type: 表示响应内容的类型,如text/html、application/json等。
- Location: 响应重定向的目标URL。
- Server: 表示服务器的名称和版本信息。
- Set-Cookie: 告知客户端需要设置的Cookie值。
实体头部
实体头部是对响应正文的描述,它包含有关正文数据本身的信息,比如字符编码、长度、类型等,常见的实体头部字段有:
- Content-Encoding: 表示响应内容的编码方式,如gzip、deflate等。
- Content-Language: 表示正文的自然语言。
- Content-Length: 表示响应的字节数。
- Content-Type: 表示响应内容的类型,如text/html、application/json等。
下面是HTTP头部信息的两个示例:
1.请求头部示例:
GET /index.html HTTP/1.1
Host: www.example.com
Connection: keep-alive
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
这是一个HTTP请求头部的示例。其中包含了常用的请求头信息,例如请求方式、请求的资源地址、主机信息、缓存控制、浏览器信息等。
2.响应头部示例:
HTTP/1.1 200 OK
Server: Apache/2.2.22 (Ubuntu)
Last-Modified: Fri, 22 Jul 2016 02:19:19 GMT
ETag: "68024703-6459-538722aeb2717"
Content-Type: text/html
Content-Length: 25753
Accept-Ranges: bytes
Date: Fri, 19 Oct 2018 03:02:01 GMT
Via: 1.1 google
这是一个HTTP响应头部示例。其中包含了常用的响应头信息,例如响应状态码、服务器信息、修改时间、响应内容类型和长度等。