HTTP 核心知识点整理

news/2025/3/30 3:29:55/

1. HTTP 基础

  • 定义:HTTP(HyperText Transfer Protocol)是应用层协议,基于 ​请求-响应模型,用于客户端(浏览器)与服务器之间的通信。
  • 特点
    • 无状态:每次请求独立,服务器不保留客户端状态(通过 Cookie/Session 解决)。
    • 明文传输​(HTTP) vs ​加密传输​(HTTPS)。
    • 默认端口:HTTP(80),HTTPS(443)。

2. HTTP 方法(Methods)​

方法描述幂等性安全性
GET获取资源,参数在 URL 中
POST提交数据,可能创建资源或触发操作
PUT更新整个资源
PATCH部分更新资源
DELETE删除资源
HEAD获取响应头,无响应体

幂等性:多次执行结果相同(如 GET、PUT、DELETE)。
安全性:不修改资源(如 GET、HEAD)。


3. HTTP 状态码(Status Codes)​

状态码类别常见状态码及含义
1xx信息性100(继续)
2xx成功200(OK)​, 201(Created)
3xx重定向301(永久重定向)​, ​302(临时重定向)​, 304Not Modified(缓存未修改)
4xx客户端错误400(请求错误)​, ​401(未认证)​, ​403(禁止访问)​, ​404(未找到)​
5xx服务器错误500(内部错误)​, 502(网关错误), 503(服务不可用)

关键区别

  • 301 vs 302:301 是永久重定向(浏览器缓存),302 是临时重定向。
  • 401 vs 403:401 表示未认证,403 表示无权限。

4. HTTP 头部(Headers)​

  • 通用头部
    • Cache-Control:缓存策略(如 max-age=3600)。
    • Connection:控制连接(如 keep-alive)。
  • 请求头部
    • Host:目标域名。
    • User-Agent:客户端信息。
    • Authorization:认证信息(如 Bearer Token)。
  • 响应头部
    • Content-Type:响应体类型(如 application/json)。
    • Content-Length
    • Content-Encoding
    • Set-Cookie:设置 Cookie。
  • 缓存相关
    • ETag:资源标识,用于协商缓存。
    • Last-Modified:资源最后修改时间。

5. HTTP vs HTTPS

  • HTTPS = HTTP + SSL/TLS 加密。
  • 加密流程
    1. 客户端发送请求,服务器返回证书。
    2. 客户端验证证书,生成对称密钥并用公钥加密发送。
    3. 服务器用私钥解密,后续通信使用对称加密。
  • HTTP问题:无状态,明文传输,不安全
  • HTTP的风险:窃听、篡改、冒充
  • HTTPS如何解决的:信息加密、校验机制、身份证书

6. HTTP 缓存机制

  • ​强制缓存​(无需请求服务器):
    • Cache-Control: max-age=3600(优先级高于 Expires)。
  • 协商缓存​(需请求服务器验证):
    • Last-Modified + If-Modified-Since(时间戳)。
    • ETag + If-None-Match(唯一标识,精度更高)。

缓存流程
强缓存生效 → 直接返回本地缓存;
强缓存失效 → 发起请求,验证协商缓存 → 返回 304 或新内容。


7. HTTP/1.1 vs HTTP/2 vs HTTP/3

  • HTTP/1.1
    • 持久连接(默认 Connection: keep-alive)。
    • 队头阻塞(同一连接需顺序处理请求)。
  • HTTP/2
    • 多路复用(一个连接并行处理多个请求)。
    • 头部压缩(HPACK)。
    • 二进制传输。
    • 服务器推送(Server Push)。
  • HTTP/3
    • 基于 ​QUIC 协议​(UDP 实现,解决队头阻塞)。
    • 更快握手(0-RTT)。

8. 安全相关

  • CSRF(跨站请求伪造)​
    • 防御:Token 验证、SameSite Cookie 属性。
  • XSS(跨站脚本攻击)​
    • 防御:输入过滤、输出转义、CSP(内容安全策略)。

9. Cookie 和 Session

  • Cookie:客户端存储,通过 Set-Cookie 设置,每次请求自动携带。
  • Session:服务端存储用户状态,Session ID 通过 Cookie 传递。
  • 区别
    • Cookie 不安全(可篡改),Session 较安全但需服务器存储。
    • 分布式系统中 Session 需共享存储(如 Redis)。

10. RESTful API 设计

  • 资源定位:URL 表示资源(如 /users/123)。
  • HTTP 方法对应操作:GET(查)、POST(增)、PUT(改)、DELETE(删)。
  • 状态码语义化:200(成功)、201(创建)、400(错误请求)等。
  • 版本控制:通过 URI(/v1/users)或头部(Accept-Version: v1)。

11. 性能优化

  • 减少请求次数:合并资源(CSS/JS)、雪碧图。
  • 使用 CDN 加速静态资源。
  • 压缩资源:Gzip、Brotli。
  • 启用 HTTP/2 多路复用。

12.http与websocket

  • websocket是全双工通信,适用于实时应用

高频面试题

  1. GET 和 POST 的区别?
  2. HTTP 状态码 301 和 302 的区别?
  3. 如何实现 Cookie 的安全性(Secure/HttpOnly/SameSite)?
  4. 浏览器缓存机制是怎样的?
  5. HTTP/2 如何提升性能?
  6. HTTP如何解决“粘包”的问题的?
    1. HTTP 协议通过设置回车符、换行符作为 HTTP header 的边界,通过 Content-Length 字段作为HTTP body 的边界,这两个方式都是为了解决“粘包”的问题。

1.HTTPS的连接是如何建立的?

步骤一:TCP 连接建立
  • 客户端向服务器发起 HTTPS 请求(默认端口 443),开始 TCP 三次握手。

步骤二:TLS 握手(密钥协商)​
  1. Client Hello

    • 客户端发送支持的 TLS 版本、加密套件列表(如 RSA、ECDHE)、客户端随机数(Client Random)。
  2. Server Hello

    • 服务器选择加密套件,返回服务器随机数(Server Random)和数字证书(包含公钥、域名、颁发机构等信息)。
  3. 证书验证

    • 客户端验证证书的合法性(如是否过期、域名匹配、证书链是否可信等)。
  4. 生成预主密钥

    • 客户端生成一个随机数 ​预主密钥(Pre-Master Secret)​,用服务器公钥加密后发送给服务器。
  5. 生成会话密钥

    • 服务器用私钥解密获取预主密钥,结合 Client Random 和 Server Random,双方通过算法生成相同的 ​对称会话密钥(Session Key)​

步骤三:加密通信
  • 后续所有 HTTP 数据均使用 ​对称加密(如 AES)​ 传输,会话密钥仅在此次连接中有效,确保高效和安全。

关键词:

  • 非对称加密:用于安全交换对称密钥(RSA/ECDHE)。
  • 对称加密:用于高效加密实际数据(AES)。
  • 证书验证:防止中间人攻击,确保服务器身份可信。

http://www.ppmy.cn/news/1583434.html

相关文章

爬虫案例-爬取某站视频

文章目录 1、下载FFmpeg2、爬取代码3、效果图 1、下载FFmpeg FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。 点击下载: ffmpeg 安装并配置 FFmpeg 步骤: 1.下载 FFmpeg: 2.访问 FFmpeg 官网。 3.选择 Wi…

蓝桥杯嵌入式十六届模拟三

由硬件框图可以知道我们要配置LED 和按键 一.LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 二.按键 按键配置,由原理图按键所对引脚要GPIO_Input 生成代码,在文件夹中添加code文件夹,code中添加fun.…

长江学者答辩ppt_特聘教授ppt案例_校企联聘ppt制作_青年项目ppt模板

“长江学者奖励计划”是高层次人才队伍建设的引领性工程。 为落实科教兴国战略,延揽海内外中青年学界精英,培养造就高水平学科带头人,启动实施了“长江学者奖励计划”。 / 长江学者答辩ppt案例 长江学者特聘教授答辩PPT设计 长江学者PPT项…

【大模型学习】什么是具身智能

目录 一、技术背景与历史发展 二、什么是具身智能? 三、技术要点及具体实现细节 1. 感知技术: 2. 运动控制: 3. 学习机制: 4. 人机交互: 四、架构 五、应用 六、实际应用案例 一、技术背景与历史发展 人工智能的…

如何保障kafka的数据不会重复消费呢,如何防止漏掉呢

在 Kafka 中保障数据不重复消费且不丢失,需要从生产者、消费者和 Kafka 自身配置三个层面综合设计。以下是具体实现方案: 一、防止数据重复消费 1. 消费者端控制 手动提交 Offset 禁用自动提交(enable.auto.commitfalse)&#x…

LangChain开发(二)LangChain提示词模板Template使用

文章目录 Prompt tempates(提示词模板)什么是提示词模板?创建一个提示词模板(prompt template)聊天消息提示词模板(chat prompt template)MessagesPlaceholder 提示词追加示例(Few-s…

ShardingSphere5.2.1+达梦数据库分表操作

上一篇使用的ShardingSphere版本为4.1.1&#xff0c;本次使用5.2.1 依赖引用 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instan…

JPA、Hibernate、 Spring Data JPA 以及Mybatis的关系(Java)

一、JPA是啥&#xff1f; 本质&#xff1a;是 Java EE 的 ORM 规范&#xff08;定义接口和注解&#xff0c;如 Entity, Table&#xff09;&#xff0c;不提供具体实现。 &#xff08;在我看来他就是个标准&#xff0c;就是你怎么写都得按人家标准来&#xff0c;不然就不行&…