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://www.mzph.cn/bicheng/74468.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

汤臣倍健业绩倒车:2024年利润下滑超六成,三大核心品牌销量失守

撰稿|行星 来源|贝多财经 汤臣倍健的2024年,“隐痛”不少。 3月22日,国内膳食营养补充剂供应商汤臣倍健股份有限公司(SZ:300416,下称“汤臣倍健”)公布了2024年年度报告。财报显示,汤臣倍健过去一年出现了…

C#中的Lambda表达式‌

在C#中,‌Lambda表达式‌是一种比匿名方法更简洁、更灵活的语法形式,用于定义匿名函数(Anonymous Function)。它通过>运算符实现,能够大幅简化委托和表达式树的编写,是现代C#编程中广泛使用的核心特性之…

通信系统的性能指标

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、通信系统的性能指标概述二、数字通信系统的有效性指标三、数字通信系统的可靠性指标总结 前言 一、通信系统的性能指标概述 其中一个提高,另一个…

Linux:(模拟HTTP协议,GET和POST方法,Http的状态码)

目录 一、认识HTTP协议 1.上网的本质 2.应用层的运行逻辑 3.HTTP的概念 二、url 1.认识网址 三、HTTP协议的宏观理解 1.HTTP请求 2.HTTP响应 3.实际的HTTP请求 (1)测试代码 (2)接收HTTP请求 (3&#xff09…

动态规划之完全背包

引言: 完全背包 隶属于动态规划中的背包问题。而 01背包 又是完全背包的基石,所以不懂01背包的,有必要了解一下。 什么是完全背包? 01背包问题:有一个背包承重为V,有N个物品,每个物品的价值(…

Codeforces Round 1003 (Div. 4)

ABCDE略 F 如果这个序列有两个一样的数挨着或者中间只隔一个其他的数&#xff0c;那么这个数就是多数。可以用反证法&#xff0c;构造一个多值序列无法不包含以上两种结构。只需要在树上找这两种结构就可以了 #include <bits/stdc.h> #define int long long using nam…

金融数据分析(MATLAB)个人学习笔记(5):金融实证分析实例

一、国内外常用金融数据库简介 &#xff08;一&#xff09;国外数据库 1. CRSP数据库 CRSP&#xff08;Center for Research in Security Prices,证券价格研究中心&#xff09;是美国芝加哥大学商研所金融研究中心的产品。收集的美国股票和指数数据来源主要为纽约证券交易所…

硬件基础(3):三极管(4):关于三极管的压降

文章目录 三极管的压降使用与测量注意事项 三极管的压降 三极管的“压降”通常是指在一定工作状态下&#xff0c;三极管不同电极之间产生的电压差。对于常见的双极性晶体管&#xff08;BJT&#xff09;而言&#xff0c;最常讨论的压降通常包括以下几个部分&#xff1a; 基-发射…

[深度学习]图像分类项目-食物分类

图像分类项目-食物分类(监督学习和半监督学习) 文章目录 图像分类项目-食物分类(监督学习和半监督学习)项目介绍数据处理设定随机种子读取文件内容图像增广定义Dataset类 模型定义迁移学习 定义超参Adam和AdamW 训练过程半监督学习定义Dataset类模型定义定义超参训练过程 项目介…

5.go切片和map

切片的概念 数组和切片相比较切片的长度是不固定的&#xff0c;可以追加元素&#xff0c;在追加时可能会使切片的容量增大&#xff0c;所以可以将切片理解成 "动态数组"&#xff0c;但是&#xff0c;它不是数组&#xff0c;而是构建在数组基础上的更高级的数据结构。…

在 Windows 上安装 PowerShell 的多种方法与完整指南

原文&#xff1a;在 Windows 上安装 PowerShell 的多种方法与完整指南 | w3cschool笔记 在 Windows 上安装 PowerShell 有多种方式。每种安装方法都适用于不同的场景和工作流。请选择最适合您需求的方法。 WinGet&#xff1a;推荐在 Windows 客户端上安装 PowerShell 的方式MS…

云原生算力引擎:分布式推理的流体动力学

引言&#xff1a;算力黑洞的引力扰动 OpenAI推理集群日处理4.5亿次请求&#xff0c;CUDA 12.3实现μs级张量切换。特斯拉Dojo超算芯片间延迟0.5ns&#xff0c;阿里巴巴PAI平台节省58%训练时长。HuggingFace模型库下载量突破3亿次&#xff0c;AWS Inferentia芯片能效比提升8倍。…

MySQL MVCC的快照读和当前读区别,Redis的RDB+AOF混合持久化流程。

MySQL MVCC 的快照读和当前读区别 快照读 (Snapshot Read) 定义: 读取数据的历史版本&#xff08;快照&#xff09;&#xff0c;基于 MVCC&#xff08;多版本并发控制&#xff09;实现。特点: 不加锁&#xff0c;非阻塞读。返回事务开始时的快照数据&#xff0c;确保一致性。…

Cesium 自定义路径导航材质

cesium 自定义路径导航纹理图片随便更换&#xff0c;UI 提供设计图片即可达到效果&#xff1b; 打开小马的weix 关注下 搜索“技术链” 回复关键词《《路径》》获取原始代码&#xff1b; 拿到就能用轻松解决&#xff01;帮忙点个关注吧&#xff01;

3月25号

添加图片的一些例子: // 创建一个二维数组,用来管理数据int[][] data new int[4][4]; // 记录空白方块的位置int x0;int y0; // 定义一个变量,记录当前展示图片的路径String path"E:\\java\\jigsawgame\\路飞\\路飞"; // 加载图片细节: // …

【机器学习】什么是支持向量机?

什么是支持向量机&#xff1f; 支持向量机&#xff08;SVM&#xff0c;Support Vector Machine&#xff09;是一种强大的机器学习算法&#xff0c;常用于分类问题&#xff0c;也可以用于回归问题。它的核心思想是通过找到一个最佳的“超平面”来将不同类别的数据分开&#xff…

10分钟打造专属AI助手!ToDesk云电脑/顺网云/海马云操作DeepSeek哪家强?

文章目录 一、引言云计算平台概览ToDesk云电脑&#xff1a;随时随地用上高性能电脑 二 .云电脑初体验DeekSeek介绍版本参数与特点任务类型表现 1、ToDesk云电脑2、顺网云电脑3、海马云电脑 三、DeekSeek本地化实操和AIGC应用1. ToDesk云电脑2. 海马云电脑3、顺网云电脑 四、结语…

Spring Boot 一个接口实现任意表的 Excel 导入导出

Java的web开发需要excel的导入导出工具&#xff0c;所以需要一定的工具类实现&#xff0c;如果是使用easypoi、Hutool导入导出excel&#xff0c;会非常的损耗内存&#xff0c;因此可以尝试使用easyexcel解决大数据量的数据的导入导出&#xff0c;且可以通过Java8的函数式编程解…

QT原子变量:QAtomicInteger、QAtomicPointer、QAtomicFlag

引言&#xff1a;原子变量为何重要&#xff1f; 在多线程编程中&#xff0c;共享数据的原子性访问是保证线程安全的核心。传统互斥锁虽然有效&#xff0c;但会带来性能损耗和死锁风险。QT提供的原子类型&#xff08;QAtomicInteger、QAtomicPointer、QAtomicFlag&#xff09;通…

大模型金融企业场景落地应用

一、商业银行体系 1. 江苏银行 企业背景&#xff1a;江苏银行是总部位于江苏南京的全国性股份制商业银行&#xff0c;在城商行中资产规模位居前列&#xff0c;积极拥抱金融科技&#xff0c;将数字化转型作为核心战略之一。近年来&#xff0c;江苏银行持续加大在人工智能、大数…