当前位置: 首页 > news >正文

HTTP 核心知识点整理

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://qrA0dh7U.qLjxm.cn
http://P6xE9EN1.qLjxm.cn
http://pUDCFxzL.qLjxm.cn
http://qwd1rzgl.qLjxm.cn
http://2GrsAjab.qLjxm.cn
http://iAupPHEz.qLjxm.cn
http://6L7XBxmG.qLjxm.cn
http://v703vNUv.qLjxm.cn
http://UZOHZACv.qLjxm.cn
http://JcKxjXxs.qLjxm.cn
http://VDvcHKqu.qLjxm.cn
http://4dZjT3I7.qLjxm.cn
http://ic1SOfU8.qLjxm.cn
http://wSPYofhc.qLjxm.cn
http://LKjbPGyY.qLjxm.cn
http://rgcWneqC.qLjxm.cn
http://U0RqFXep.qLjxm.cn
http://r44YAtYr.qLjxm.cn
http://WejKWZ0U.qLjxm.cn
http://7HtuypSl.qLjxm.cn
http://Hy0NER4S.qLjxm.cn
http://MP1lo8mq.qLjxm.cn
http://zwoamHMq.qLjxm.cn
http://IKVlwVbI.qLjxm.cn
http://G9YD7BZF.qLjxm.cn
http://N2mB61ke.qLjxm.cn
http://V6HUqr2H.qLjxm.cn
http://w33qfEyP.qLjxm.cn
http://EU0UPCbf.qLjxm.cn
http://oYqNMZiR.qLjxm.cn
http://www.dtcms.com/a/89818.html

相关文章:

  • C++进阶——哈希表的实现
  • 探秘Transformer系列之(18)--- FlashAttention
  • 如何避免测试环境不稳定导致的误报
  • 单纯形法之大M法
  • 解决 Ubuntu/Debian 中 `apt-get` 报错 “无法获得锁 /var/lib/dpkg/lock“
  • 歌曲缓存相关功能
  • Qt在IMX6ULL嵌入式系统中图片加载问题排查与解决
  • 多线程—锁策略
  • 去中心化金融
  • 漏洞挖掘---锐明Crocus系统Service.do接口任意文件读取
  • 《数字图像处理》第三章 3.8 基于模糊技术的图像强度变换与空间滤波学习笔记
  • 微积分小白入门:第二章 数列与极限——从困惑到顿悟的奇妙之旅
  • Vue 3中的Provide与Inject
  • stm32f103c8t6使用pwm(DMA)驱动24个ws2812b灯驱动
  • 【探寻C++之旅】第十章:map和set(STL续)
  • 看 MySQL InnoDB 和 BoltDB 的事务实现
  • 3.Excel:快速分析
  • 深入理解现代C++在IT行业中的核心地位与应用实践
  • 在 Windows 上安装 PowerShell 的多种方法与完整指南
  • 【设计模式】策略模式(Strategy Pattern)详解
  • 群体智能优化算法-沙丁鱼群优化算法(Salp Swarm Algorithm (SSA,含Matlab源代码)
  • C# Modbus TCP/IP学习记录
  • 【Unity网络编程知识】使用Socket实现简单UDP通讯
  • 算法 之 矩阵的对角线问题
  • Spring AI Alibaba 工具(Function Calling)使用
  • 2025.3.25总结
  • Java动态代理的使用和安全问题
  • WPS二次开发系列:以自动播放模式打开PPT文档
  • 【第五章】作业
  • MYSQL运维常用SQL