这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天。
什么是HTTP协议?
- HTTP:网络通信规则全称超文本传输协议,是基于TCP/IP协议传输数据的应用层协议,分为请求和响应。当我们浏览网页数据时HTTP协议在其中发挥很大作用。
- 特点:简单可扩展、无状态。
超文本
常见状态码
| 状态码 | 说明 |
|---|---|
| 200 | 请求成功 |
| 301 | 资源被转移到其他URL |
| 302 | 临时跳转 |
| 401 | 请求未经授权 |
| 404 | 请求资源不存在 |
| 500 | 服务器内部发生不可预估的错误 |
| 504 | GateWay Timeout-请求超时 |
2XX
-
201 Created :请求被成功处理并且在服务端创建了一个新的资源。比如我们通过 POST 请求创建一个新的用户。
-
202 Accepted :服务端已经接收到了请求,但是还未处理。
-
204 No Content : 服务端已经成功处理了请求,但是没有返回任何内容
3XX【重定向】
4XX【客户端错误状态码】
- 400:客户端请求的报文有错误,比如请求参数不合法、请求方法错误。
- 401 Unauthorized : 未认证却请求需要认证之后才能访问的资源
- 403:服务器禁止访问,而不是客户端请求失败
- 409 Conflict : 表示请求的资源与服务端当前的状态存在冲突,请求无法被处理。
5xx【服务端错误】
502:比如nginx负载均衡那台机子,本身没有错误,但是继续跳转下游的服务器时,下游服务器不能提供服务,或者返回了错误
503:I am busy
常见请求头与响应头
客户端向服务端发送请求,服务端对请求响应,向客户端反馈资源。
- 请求头组成和响应头组成:首行、header、空行、body(存放url参数)
缓存
强缓存:
本地缓存若存在直接使用。 强缓存是利用下面这两个 HTTP 响应头部(Response Header)字段实现的,它们都用来表示资源在客户端缓存的有效期:
Cache-Control, 是一个相对时间;Expires,是一个绝对时间;
如果 HTTP 响应头部同时有 Cache-Control 和 Expires 字段的话,Cache-Control的优先级高于 Expires 。
Cache-control 选项更多一些,设置更加精细,所以建议使用 Cache-Control 来实现强缓存。具体的实现流程如下:
- 当浏览器第一次请求访问服务器资源时,服务器会在返回这个资源的同时,在 Response 头部加上 Cache-Control,Cache-Control 中设置了过期时间大小;
- 浏览器再次请求访问服务器中的该资源时,会先通过请求资源的时间与 Cache-Control 中设置的过期时间大小,来计算出该资源是否过期,如果没有,则使用该缓存,否则重新请求服务器;
- 🎆服务器再次收到请求后,会再次更新 Response 头部的 Cache-Control。
协商缓存:
协商缓存就是与服务端协商之后,通过协商结果来判断是否使用本地缓存。
cookie:存储的是用户身份相关的信息,一般不会太大(最大4Kb)通常服务器每次发送请求需要知道的数据存放在cookie中。
HTTP的缺点
1. 无状态
可以用cookie来解决
2.明文传输
3.不安全
HTTP ⽐较严重的缺点就是不安全:
通信使⽤明⽂(不加密) ,内容可能会被窃听。⽐如, 账号信息容易泄漏,那你号没了。 不验证通信⽅的身份,因此有可能遭遇伪装。⽐如, 访问假的淘宝、拼多多,那你钱没了。 ⽆法证明报⽂的完整性,所以有可能已遭篡改。⽐如, ⽹⻚上植⼊垃圾⼴告,视觉污染,眼没了。
-
HTTP 的安全问题,可以⽤ HTTPS 的⽅式解决,也就是通过引⼊ SSL/TLS 层,使得在安全上达到了极致。