HTTP 使用指南 | 青训营笔记

57 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天。

什么是HTTP协议?

  • HTTP:网络通信规则全称超文本传输协议,是基于TCP/IP协议传输数据的应用层协议,分为请求和响应。当我们浏览网页数据时HTTP协议在其中发挥很大作用。
  • 特点:简单可扩展、无状态。

超文本

image.png

常见状态码

状态码说明
200请求成功
301资源被转移到其他URL
302临时跳转
401请求未经授权
404请求资源不存在
500服务器内部发生不可预估的错误
504GateWay Timeout-请求超时

2XX

  • 201 Created :请求被成功处理并且在服务端创建了一个新的资源。比如我们通过 POST 请求创建一个新的用户。

  • 202 Accepted :服务端已经接收到了请求,但是还未处理。

  • 204 No Content : 服务端已经成功处理了请求,但是没有返回任何内容

3XX【重定向】

image.png

4XX【客户端错误状态码】

  • 400:客户端请求的报文有错误,比如请求参数不合法、请求方法错误。
  • 401 Unauthorized : 未认证却请求需要认证之后才能访问的资源
  • 403:服务器禁止访问,而不是客户端请求失败
  • 409 Conflict : 表示请求的资源与服务端当前的状态存在冲突,请求无法被处理。

5xx【服务端错误】

502:比如nginx负载均衡那台机子,本身没有错误,但是继续跳转下游的服务器时,下游服务器不能提供服务,或者返回了错误

503:I am busy

image.png

常见请求头与响应头

客户端向服务端发送请求,服务端对请求响应,向客户端反馈资源。

  • 请求头组成和响应头组成:首行、header、空行、body(存放url参数)

image.png

image.png

缓存

强缓存

本地缓存若存在直接使用。 强缓存是利用下面这两个 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 ,使得在安全上达到了极致。