HTTP | 青训营笔记

42 阅读3分钟

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

今天主要学习了HTTP协议的一些基础知识。

一、HTTP的定义

问:输入字符到最后呈现网页,究竟发生了什么?流程图如下 image.png

1. 什么是HTTP

  • Hyper Text Transfer Protocol超文本传输协议
  • 应用层协议,基于TCP协议
  • 请求响应
  • 简单可扩展
  • 无状态:每一个请求之间都是独立的

二、协议分析

1.发展

HTTP/0.9单行协议

  • 请求GET /mypage.html
  • 响应只有HTML文档

HTTP/1.0

  • 增加了Header
  • 有了状态码
  • 支持多种文档类型

HTTP/1.1标准化协议

  • 链接复用
  • 缓存
  • 内容协商
graph TD
HTTP/0.9单行协议 --> HTTP/1.0 --> HTTP/1.1标准化协议 --> HTTP/2更优异的表现 --> HTTP/3草案

2.报文

image.png

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

Method Safe (安全的)︰不会修改服务器的数据的方法
GET HEAD OPTIONS
ldempotent(幂等)︰同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的, 所有safe的方法都是ldempotent的
GET HEAD OPTIONS PUT DELETE

状态码

  • 200 OK-客户端请求成功
  • 301-资源(网页等)被永久转移到其它URL302-临时跳转
  • 401 Unauthorized -请求未经授权
  • 404-请求资源不存在,可能是输入了错误的URL500 -服务器内部发生了不可预期的错误
  • 504 Gateway Timeout-网关或者代理的服务器无法在规定的时间内获得想要的响应。 RESTful API RESTful APl:一种API设计风格;REST - Representational State Transfer
  1. 每一个URI代表一种资源﹔
  2. 客户端和服务器之间,传递这种资源的某种表现层﹔
  3. 客户端通过HTTP method,对服务器端资源进行操作,实现"表现层状态转化"。

常用请求头 image.png 常用响应头 image.png 缓存
1)强缓存

  • Expires,时间戳
  • Cache-Control: ·可缓存性 · no-cache :协商缓存验证 · no-store :不使用任何缓存
  • 到期 · max-age∶单位是秒,存储的最大周期,相对于请求的时间
  • 重新验证*重新加载 · must-revalidate :一旦资源过期,在成功向原始服务器验证之前,不能使用

2)协商缓存

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