Http| 青训营笔记

60 阅读3分钟

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

HTTP协议

从输入网址到网页展示的全过程

image.png

  • browser进程处理输入信息
  • 浏览器内核发起请求
  • 通过Internet到服务器返回响应
  • 浏览器内核读取响应
  • 浏览器内核进行渲染

什么是http

image.png

协议发展过程

image.png

  • HTTP/0.9 单行协议

    • 只有GET请求
    • 响应只有HTML文档
  • HTTP/1.0 构建可拓展性

    • 增加了Header
    • 有了状态码
    • 支持多种文档类型
  • HTTP/1.1 标准化协议

    • 链接复用
    • 缓存
    • 内容协商
  • HTTP/2 更优异的表现

    • 二进制协议
    • 压缩header
    • 服务器推送

方法

image.png 方法的特性:

  • 安全性:不会修改服务器数据(GET HEAD OPTIONS)
  • 幂等性:同样请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的(GET HEAD OPTIONS PUT DELETE)

状态码

HTTP 状态码 (Status code) 是 HTTP 协议中用于表示请求/响应状态的三位数字代码。它由服务器在响应中返回,可以帮助客户端理解请求的结果。主要分为五类:

  • 1xx (Informational): 表示请求已被接受,继续处理。
  • 2xx (Successful): 表示请求已成功被服务器接收、理解、并接受。
  • 3xx (Redirection): 表示请求要求进行附加操作以完成。
  • 4xx (Client Error): 表示请求中有语法错误或请求无法被服务器理解。
  • 5xx (Server Error): 表示服务器在处理请求的过程中发生了错误。

常见的状态码有:

  • 200:客户端请求成功
  • 301:资源被永久转移到了其他URL
  • 302:临时跳转
  • 401:未授权
  • 404:请求资源不存在
  • 500:服务器内部错误
  • 504:网关或代理服务器无法在规定时间内得到响应

RESTful API

一种API设计风格。REST指的是表现状态转化

  1. 每个URI代表一种资源
  2. 客户端和服务器间传递这种资源的某种表现层
  3. 客户端通过HTTP method对服务器端资源进行操作,实现“表现层状态转化”

image.png

常用请求头

  • Accept:接收类型,表示浏览器支持的MIME类型。(关于MIME可以参考计网)
  • Content-Type:客户端发送出去实体内容的类型
  • Cache-Control:指定请求和响应遵循的缓存机制,如no-cache
  • If-Modified-Since:对应服务器端的Last-Modified,用来匹配查看文件变动情况
  • Expires:缓存控制,在这个时间内不会请求而是直接使用缓存
  • Max-age:资源在本地缓存使用的时间,时间内不会请求,而是使用缓存
  • If-None-Match:对应服务器端的ETag,用来匹配文件内容是否改变(非常精确)
  • Cookie:由cookie并且同域访问时自动带上
  • Referer:页面的来源URL(精确到详细页面地址)
  • Origin:请求从哪里发起(只精确到端口),比Referer更尊重隐私
  • User-Agent:用户客户端的一些必要信息

常用响应头

  • Content-Type:服务端返回的实体内容的类型
  • Cache-Control:指定请求和响应遵循的缓存机制,如no-cache
  • Last-Modified:资源最后修改时间
  • Expires:应该在何时认为文档以及过期从而不再缓存
  • Max-age:客户端本地资源应该缓存多少秒,开启Cache-Control后有效
  • ETAg:资源的特定版本标识符
  • Set-Cookie:设置和页面关联的cookie,服务器通过这个头部将cookie传给客户端
  • Server:服务器相关信息
  • Access-Control-Allow-Origin:服务器端允许的请求Origin头部

缓存

image.png

image.png

cookie

Response中的Set-Cookie

image.png

http/2

image.png

image.png

image.png

HTTPS

在HTTP基础上进行了TSL/SSL加密

  • 对称加密:加密解密使用同一密钥
  • 非对称加密:加密和解密需要使用公钥私钥两个不同密钥

HTTPS在证书验证阶段使用非对称加密。数据传输阶段使用对称加密。

image.png