HTTP“食”用指南 | 青训营笔记

49 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第4天。 本次课程的主要内容是HTTP协议的简介、基本结构、发展历程、常见应用场景等。

(一)HTTP协议初识

概念

HTTP 是一种能够获取如 HTML 这样的网络资源的通信协议。它是在 Web 上进行数据交换的基础,请求通常是由像浏览器这样的接受方发起的。一个完整的 Web 文档通常是由不同的子文档拼接而成的,像是文本、布局描述、图片、视频、脚本等等。

特点

  1. 简单
  • 虽然下一代 HTTP/2 协议将 HTTP 消息封装到了帧(frames)中,HTTP 大体上还是被设计得简单易读。HTTP 报文能够被人读懂,还允许简单测试,降低了门槛,对新人很友好。
  1. 可扩展
  • HTTP/1.0 中出现的 HTTP headers 让协议扩展变得非常容易。只要服务端和客户端就新headers 达成语义一致,新功能就可以被轻松加入进来。
  1. 无状态,有会话
  • HTTP 是无状态的:在同一个连接中,两个执行成功的请求之间是没有关系的。这就带来了一个问题,用户没有办法在同一个网站中进行连续的交互,比如在一个电商网站里,用户把某个商品加入到购物车,切换一个页面后再次添加了商品,这两次添加商品的请求之间没有关联,浏览器无法知道用户最终选择了哪些商品。而使用 HTTP 的头部扩展,HTTP Cookies 就可以解决这个问题。把 Cookies 添加到头部中,创建一个会话让每次请求都能共享相同的上下文信息,达成相同的状态。
  • 注意,HTTP 本质是无状态的,使用 Cookies 可以创建有状态的会话。

(二)协议发展

image.png

image.png

image.png

image.png

image.png

(三)协议解析————报文

Mehod

MethodExplanation
GET请求一个指定资源的表示形式。使用 GET 的请求应该只被用于获取数据。
POST用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用。
PUT用请求有效载荷替换目标资源的所有当前表示。
DELETE删除指定的资源。
HEAD请求一个与 GET 请求的响相同的响应,但没有响应体。
CONNECT建立一个到由目标资源标识的服务器的隧道。
OPTIONS用于描述目标资源的通信选项。
TRACE沿着到目标资源的路径执行一个消息环回测试。
PATCH用于对资源应用部分修改。

特性

  • Safe(安全):不会修改服务器数据的方法,例如 GET、HEAD。OPTIONS

  • Independent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。

    • 所有 Safe 的方法 都是 Independent 的
    • GET、HEAD、OPTIONS、PUT、DELETE

状态码

image.png

RESTful API

image.png

image.png

image.png

缓存

强缓存

  • Expires,时间戳

  • Cache-Control

    • 可缓存性

      • no-cache :协商缓存验证
      • no-store :不使用任何缓存
    • 到期

      • max-age :单位是秒,存储的最大周期,相对于请求的时间
    • 重新验证 重新加载

      • must-revalidate :一旦资源过期,在成功向原始服务器验证之前,不能使用

协商缓存

  • Etag / If-None-Match :资源的特定版本的标识符,类似于指纹
  • Last-Modified / If-Modified-Since :最后修改时间

image.png

Cookie

image.png

(四)场景分析

静态资源

image.png

image.png

image.png

image.png

登录

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png