xyxsw
文章35
标签3
分类0
HTTP协议 | 青训营笔记

HTTP协议 | 青训营笔记

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

本堂课重点内容

  1. HTTP 协议的简单介绍
  2. HTTP 协议的报文结构

详细知识点介绍

HTTP 全称超文本传输协议(Hyper Text Transfer Protocol),是一个基于TCP协议的无状态应用层协议。

HTTP 发展历史

  • HTTP/0.9

    • 只有GET类型的请求

    • 只能响应HTML文档

  • HTTP/1.0

    • 增加了 Header

    • 增加了状态码

    • 支持了多种文档类型

  • HTTP/1.1(常见)

    • 连接复用

    • 提供了缓存支持

    • 支持内容协商

  • HTTP/2

    • 二进制协议

    • 支持Header压缩

    • 增加了服务器推送(Server Push)

  • HTTP/3

    • 基于QUIC(udp)协议

常见的 HTTP Methods

请求类型 说明
GET 请求一个指定的资源。使用GET的请求一般用于获取数据
POST 将实体提交到指定资源,通常导致服务器上的状态变化或副作用
PUT 用于请求有效载荷替换目标资源
DELETE 用于删除指定的资源
HEAD 请求一个与GET请求的响应相同的响应,但没有响应体
OPTIONS 预检请求,用于描述目标资源的通信选项

其中最常见的是 GET 请求和 POST 请求,PUT DELETE 常见于各类 RESTful API 中。而 OPTIONS 请求被称为预检请求,倘若我们尝试为前面的几个请求类型增加自定义Header,浏览器会默认向服务器发出一个OPTIONS请求,用于判断服务器能否接收/处理该header。

常见 HTTP 状态码

1xx - 指示信息

2xx - 请求成功

3xx - 重定向操作

4xx - 客户端错误

5xx - 服务端错误

  • 200 正常响应
  • 301 永久重定向
  • 302 临时重定向
  • 401 未授权
  • 403 请求被拒绝
  • 404 请求资源不存在
  • 500 服务器错误
  • 504 网关错误

RESTful API

他是一种API设计风格。

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

常见请求头

  • Accept:接受类型
  • Content-Type:客户端发送出去实体内容的类型
  • Cache-Control:指定请求和响应遵循的缓存机制。
  • Cookie:有cookie会自动带上

常用响应头

  • Set-Cookie:设置和页面关联的Cookie
  • Content-Type:服务端

HTTP2

帧:http2最小通信单位,每个帧都包含帧头

消息:与逻辑请求或响应消息对应的完整的一系列帧。

数据流:已建立的连接内的双向字节流,可以承载一条或多条消息。

交错发送,接收方重组织。

HTTP2连接是永久的,而且仅需要每个来源一个连接。

流控制:阻止发送方向接收方发送大量数据的机制。

服务器有主动推送能力,可以提前推送静态资源。

HTTPS

HTTPS = HTTP + SSL

对称加密:加密和解密都是用同一个密钥

非对称加密:加密和解密都需要使用两个不同的密钥:公钥和私钥。

鉴权

  • Session+Cookie
  • JWT

WebSocket

  • 浏览器与服务器进行全双工通讯的网络技术
  • 实时性高

其他

QUIC:HTTP3的新特性

实践练习例子

https://www.w3schools.cn/html/exercise.asp

课后个人总结

本次课程主要介绍了 HTTP 协议的基本知识,以及 HTTP 的发展历史,以及常见的请求方法和状态码,以及 RESTful API。另外还介绍了 HTTPS 和 WebSocket 以及 QUIC 等新特性。学完本节课,我对 HTTP 协议有了更深入的理解,掌握了其中的常见请求头和响应头,以及常用的状态码,并且了解了 HTTP2,HTTPS,WebSocket,以及 QUIC 等新特性。

引用参考

https://developer.mozilla.org/zh-CN/docs/Web/HTTP

https://jwt.io/

本文作者:xyxsw
本文链接:https://xyxsw.ltd/2023/01/22/HTTP%E5%8D%8F%E8%AE%AE%20%EF%BD%9C%20%E9%9D%92%E8%AE%AD%E8%90%A5%E7%AC%94%E8%AE%B0/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可