文章目录
内容
- HTTP协议简介;
- HTTP请求;
- HTTP响应;
- HTTP请求方法;
- HTTP响应状态代码。
1. HTTP协议简介
1.1 什么是通信
通信,就是 信息的传递和交换。
通信三要素:
- 通信的主体;
- 通信的内容;
- 通信的方式。
1.1.1 现实生活中的通信
案例: 张三要把自己考上清华大学的好消息写信告诉自己的好朋友李四。
其中:
- 通信的 主体 是 张三 和 李四;
- 通信的 内容 是 考上清华大学;
- 通信的 方式 是 写信;
1.1.2 互联网中的通信
案例: 服务器把清华大学的简介通过响应的方式发送给客户端浏览器。
其中:
- 通信的 主体 是服务器 和 客户端浏览器;
- 通信的 内容 是 清华大学简介;
- 通信的 方式 是响应;
1.2 什么是通信协议
通信协议(Communication Protocol)是指通信的双方完成通信所必须遵守的规则和约定。
通俗的理解:通信双方采用约定好的格式来发送和接收消息,这种事先约定好的通信格式,就叫做通信协议。
1.2.1 现实生活中的通信协议
张三与李四采用写信的方式进行通信,在填写信封时,写信的双方需要遵守固定的规则。信封的填写规则就是一种通信协议。
1.2.2 互联网中的通信协议
客户端与服务器之间要实现网页内容的传输,则通信的双方必须遵守网页内容的传输协议。
网页内容又叫做超文本,因此网页内容的传输协议又叫做超文本传输协议(HyperText Transfer Protocol) ,简称 HTTP 协议。
1.3 HTTP
1.3.1 什么是HTTP协议
HTTP 协议 即超文本传送协议 (HyperText Transfer Protocol) ,它规定了客户端与服务器之间进行网页内容传输时,所必须遵守的传输格式。
例如:
- 客户端 要以HTTP协议要求的格式把数据 提交 到 服务器;
- 服务器 要以HTTP协议要求的格式把内容 响应 给 客户端。
1.3.2 HTTP协议的交互模式
HTTP 协议采用了 请求/响应 的交互模型。
2. HTTP请求消息
2.1 什么是HTTP请求消息
由于 HTTP 协议属于客户端浏览器和服务器之间的通信协议。因此,客户端发起的请求 叫做 HTTP 请求,客户端发送到服务器的消息,叫做 HTTP 请求消息。
注: HTTP 请求消息 又叫做 HTTP 请求报文。
2.2 HTTP请求消息的组成部分
HTTP 请求消息由4 个部分组成,分别是:
- 请求行(request line);
- 请求头部( header );
- 空行;
- 请求体
2.2.1 请求行
请求行 由请求方式、URL 和 HTTP 协议版本 3 个部分组成,他们之间使用空格隔开。
2.2.2 请求头部
请求头部 用来描述客户端的基本信息,从而把客户端相关的信息告知服务器。比如:User-Agent 用来说明当前是什么类型的浏览器;Content-Type 用来描述发送到服务器的数据格式;Accept 用来描述客户端能够接收什么类型的返回内容;Accept-Language 用来描述客户端期望接收哪种人类语言的文本内容。
请求头部由多行 键/值对 组成,每行的键和值之间用英文的冒号 分隔。
请求头部常见的请求字段:
| 头部字段 | 说明 |
|---|---|
| Host | 要请求的服务器域名 |
| Connection | 客户端与服务器的连接方式(close 或 keepalive) |
| Content-Length | 用来描述请求体的大小 |
| Accept | 客户端可识别的响应内容类型列表 |
| User-Agent | 产生请求的浏览器类型 |
| Content-Type | 客户端告诉服务器实际发送的数据类型 |
| Accept-Encoding | 客户端可接收的内容压缩编码形式 |
| Accept-Language | 用户期望获得的自然语言的优先顺序 |
更多请求头字段的描述,请参阅 MDN 官方文档:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers
2.2.3 空行
最后一个请求头字段的后面是一个 空行,通知服务器请求头部至此结束。
请求消息中的空行,用来分隔请求头部与请求体。
2.3.4 请求体
请求体中存放的,是要通过 POST方式 提交到服务器的数据。
注: 只有 POST 请求才有请求体,GET 请求没有请求体!
2.3.5 小结
3. HTTP响应消息
3.1 什么是HTTP响应消息
响应消息 就是 服务器响应给客户端的消息内容,也叫作响应报文。
3.2 HTTP响应消息的组成部分
HTTP响应消息由状态行、响应头部、空行 和 响应体 4 个部分组成,如下图所示:
3.2.1 状态行
状态行 由 HTTP 协议版本、状态码 和 状态码的描述文本 3 个部分组成,它们之间用空格隔开;
3.2.2 响应头部
响应头部用来描述服务器的基本信息。响应头部由多行 键/值对 组成,每行的键和值之间用英文的冒号分隔。
常见的响应字段:
更多响应头字段的描述,请参阅 MDN 官方文档:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers
3.2.3 空行
在最后一个响应头部字段结束之后,会紧跟一个 空行,用来通知客户端响应头部至此结束。
响应消息中的空行,用来分隔 响应头部 与 响应体。
3.2.4 响应体
响应体中存放的,是服务器响应给客户端的资源内容。