HTTP 报文
文章目录
在 HTTP 协议入门我们详细介绍了 HTTP 的历史演变和设计思路。
在这篇博客中,我将对 HTTP 报文进行介绍。
HTTP 请求报文
HTTP 请求报文主要由请求行、请求头、空一行、请求正文四部分组成。如下图所示。
请求行
:请求方法 + 请求路径 + 协议/版本 + /r/n请求头
:附加的需要服务器知道的一些信息。空行
:规定。请求体
:请求体相当于是一种参数。如果使用的方法是 GET,那么就没有请求体(GET 请求的参数会放在 url 里面),如果是 POST,就有请求体。
下面来看一个具体的例子。
了解了 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 响应报文主要由状态行、消息报头、空行、响应正文四部分组成。
下面来看一个具体的例子。
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 地址 |