「这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战」
HTTP为超文本传输协议,超文本指的是相比于普通文本更为强大,其支持除了文本等资源,传输协议则是客户端和服务器端的通信规则。该协议是基于TCP/IP协议的。简单回顾一下TCP协议,TCP协议需要经过三次握手,三次握手流程为:
- 客户端向服务器发出连接请求,等待服务器确认。
- 服务器端向客户端回送响应,通知客户端收到了连接请求。
- 客户端再次向服务器发送确认信息,确认连接。
TCP协议是一个相对安全的协议,HTTP因为是基于TCP协议,故其也是一个安全的协议。注意:当我们访问一次百度页面时,其客户端实际请求个数并不是1,js、css以及各种图片资源会自动发动请求。
但是我们使用
<script>,<link>和<img>标签,没有手动发起请求,但是仍然能从服务器端拿到数据,原因就是:在浏览器遇到<script>,<link>,<img>标签时会自动发出请求。
HTTP协议组成
由HTTP协议的概念可知,它分为问和答两部分。其中问指的就是请求部分,而答指的就是响应部分。
下面介绍一下请求的组成部分,其分为:
- 请求行,永远位于请求的第一行。
- 请求头,从第二行开始,到第一个空行结束。
- 请求空行,区分请求头和请求体。
- 请求体
请求的方式:
- GET
这种方式提交的数据会显示的显示在网址的后面,相对来说不太安全。下图即为其基本格式:
- POST
而post提交的数据不会显示在网址的后面,相对来说安全,并且需要注意的是只有POST请求方式才有请求体。
两个的不同区别就是get的参数是保存至url的,而post参数则是保存在请求体里面的。
下面介绍一下响应的组成部分,响应也分为四个组成部分:
- 响应行
请求方式 HTTP/版本号 状态码 状态描述。
常见状态码:
| 状态码 | 说明 |
|---|---|
| 200 | 一切都OK。 |
| 302/307 | 请求重定向(客户端行为,两次请求,地址栏发生改变) |
| 304 | 请求资源未发生变化,使用缓存 |
| 404 | 请求资源未找到 |
| 500 | 服务器错误 |
- 响应头
| 消息头 | 说明 |
|---|---|
| Location | 请求重定向的地址,常与302,307配合使用。 |
| Server | 服务器相关信息。 |
| Content-Type | 告知客户浏览器,响应正文的MIME类型。 |
| Content-Length | 告知客户浏览器,响应正文的长度。 |
| Content-Encoding | 告知客户浏览器,响应正文使用的压缩编码格式。常用的gzip压缩。 |
| Content-Language | 告知客户浏览器,响应正文的语言。zh_CN或en_US等等。 |
| Content-Disposition | 告知客户浏览器,以下载的方式打开响应正文。 |
| Refresh | 定时刷新 |
| Last-Modified | 服务器资源的最后修改时间。 |
| Set-Cookie( ***** **) | 会话管理相关,非常的重要 |
| Expires:-1 | 服务器资源到客户浏览器后的缓存时间 |
| Catch-Control: no-catch | 不要缓存,//针对http协议1.1版本 |
| Pragma:no-catch | 不要缓存,//针对http协议1.0版本 |
- 响应空行
- 响应体
下图为响应的具体组成: