HTTP 报文


HTTP 协议入门我们详细介绍了 HTTP 的历史演变和设计思路。

在这篇博客中,我将对 HTTP 报文进行介绍。


HTTP 请求报文

HTTP 请求报文主要由请求行、请求头、空一行、请求正文四部分组成。如下图所示。
HTTP 报文

  • 请求行:请求方法 + 请求路径 + 协议/版本 + /r/n
  • 请求头:附加的需要服务器知道的一些信息。
  • 空行:规定。
  • 请求体:请求体相当于是一种参数。如果使用的方法是 GET,那么就没有请求体(GET 请求的参数会放在 url 里面),如果是 POST,就有请求体。

下面来看一个具体的例子。
HTTP 报文
了解了 HTTP 请求报文的大体格式,让我们来具体了解这些字段。

1. 请求方法(Request Method)


下面是 HTTP 1.1 版本中的请求方法。

请求方法 备注
GET 请求资源
POST 提交资源
HEAD 获取响应头
PUT 替换资源
DELETE 删除资源
OPTIONS 允许客户端查看服务器性能
TRACE 回显服务器收到的请求,用于测试或诊断

2. URL


  • Uniform Resource Locator:统一资源定位符,用于描述网上的资源
  • 格式:schema://host[:port#]/path/…/[?query-string]
  • scheme:协议,如 http,https,ftp 等等。
  • host:域名或者 IP 地址
  • port:端口,
  • path:资源路径
  • query-string:发送的参数

比如:https://www.baidu.com/s?wd=hello

3. 请求头

是以键值对的形式出现。

请求头 描述
Host 主机 ip 地址或域名
User-Agent 客户端相关信息,如操作系统、浏览器等信息
Accept 指定客户端接收信息类型,如:image/jpg,text/html
Accept-Charset 客户端接收的字符集,如 gb2312
Accept-Encoding 可接受的内容编码,如 gzip
Accept-Language 接收的语言,如 Accept-language:zh-cn
Authorization 客户端提供给服务端,进行权限认证的信息
Cookie 携带的 cookie 信息
Referer 当前文档的 URL,即从哪个链接过来的
Content-Type 请求体内容类型,如 Content-Type: application/x-www-form-urlencoded
Content-Length 数据长度
Cache-Control 缓存机制,如 Cache-Control: no-cache
Pragma 防止页面被缓存

HTTP 响应报文

HTTP 响应报文主要由状态行、消息报头、空行、响应正文四部分组成。
HTTP 报文
下面来看一个具体的例子。
HTTP 报文

1. 状态码(Status Code)

用以表示网页服务器 HTTP 响应状态的 3 位数字代码

状态码 描述
1xx 提示信息,请求被成功接收
2xx 成功,请求被成功处理 200
3xx 重定向相关 304
4xx 客户端错误 404
5xx 服务端错误 500

2. 响应头(Response Head)

响应头 描述
Server HTTP服务器的软件信息
Date 响应报文的时间
Expires 指定缓存过期时间
Set-Cookies 种 Cookie
Last-Modified 资源最后修改时间
Content-Type 响应的类型和字符集
Content-Length 内容长度
Connection 如:Keep-Alive,表示保持 TCP 连接不关闭
Location 指明重定向的位置,新的 URL 地址