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 加密。
- 加密流程:
- 客户端发送请求,服务器返回证书。
- 客户端验证证书,生成对称密钥并用公钥加密发送。
- 服务器用私钥解密,后续通信使用对称加密。
- 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是全双工通信,适用于实时应用
高频面试题
- GET 和 POST 的区别?
- HTTP 状态码 301 和 302 的区别?
- 如何实现 Cookie 的安全性(Secure/HttpOnly/SameSite)?
- 浏览器缓存机制是怎样的?
- HTTP/2 如何提升性能?
- HTTP如何解决“粘包”的问题的?
- HTTP 协议通过设置回车符、换行符作为 HTTP header 的边界,通过 Content-Length 字段作为HTTP body 的边界,这两个方式都是为了解决“粘包”的问题。
1.HTTPS的连接是如何建立的?
步骤一:TCP 连接建立
- 客户端向服务器发起 HTTPS 请求(默认端口 443),开始 TCP 三次握手。
步骤二:TLS 握手(密钥协商)
-
Client Hello
- 客户端发送支持的 TLS 版本、加密套件列表(如 RSA、ECDHE)、客户端随机数(Client Random)。
-
Server Hello
- 服务器选择加密套件,返回服务器随机数(Server Random)和数字证书(包含公钥、域名、颁发机构等信息)。
-
证书验证
- 客户端验证证书的合法性(如是否过期、域名匹配、证书链是否可信等)。
-
生成预主密钥
- 客户端生成一个随机数 预主密钥(Pre-Master Secret),用服务器公钥加密后发送给服务器。
-
生成会话密钥
- 服务器用私钥解密获取预主密钥,结合 Client Random 和 Server Random,双方通过算法生成相同的 对称会话密钥(Session Key)。
步骤三:加密通信
- 后续所有 HTTP 数据均使用 对称加密(如 AES) 传输,会话密钥仅在此次连接中有效,确保高效和安全。
关键词:
- 非对称加密:用于安全交换对称密钥(RSA/ECDHE)。
- 对称加密:用于高效加密实际数据(AES)。
- 证书验证:防止中间人攻击,确保服务器身份可信。
相关文章:
HTTP 核心知识点整理
1. HTTP 基础 定义:HTTP(HyperText Transfer Protocol)是应用层协议,基于 请求-响应模型,用于客户端(浏览器)与服务器之间的通信。特点: 无状态:每次请求独立&a…...
从AEC-Q100看车规芯片的可靠性设计要点
引言 随着汽车电子化、智能化的飞速发展,汽车电子控制系统对芯片的可靠性提出了极为严苛的要求。AEC-Q100是汽车电子委员会(Automotive Electronics Council)制定的车规级芯片可靠性标准,旨在确保芯片能够在复杂多变的汽车环境中…...
陕西安全员A证考试的报名流程是什么?
陕西安全员 A 证考试报名流程如下: 进入报名系统:登录陕西省建筑工程施工企业安全管理人员及特种作业人员考试报名系统。首次使用需点击 “特种作业人员注册”,进入个人注册界面。注册账号:输入身份证号、登录密码,并…...
特殊行车记录仪DAT视频丢失的恢复方法
行车记录仪是一种常见的车载记录仪,和常见的“小巧玲珑”的行车记录仪不同,一些特种车辆使用的记录仪的外观可以用“笨重”来形容。下边我们来看看特种车载行车记录仪删除文件后的恢复方法。 故障存储: 120GB存储设备/文件系统:exFAT /簇大小:128KB 故…...
PAT乙级1007
常规解法 #include <iostream> using namespace std;// 判断一个数是否为素数的函数 bool isprime(int a) {// 遍历 2 到 sqrt(a) 之间的数,判断 a 是否能被它们整除for (int i 2; i * i < a; i) {if (a % i 0) // 如果能整除,说明 a 不是素…...
数据库中不存在该字段
mybatisplus 定义的类中某些字段是数据库里面没有的,我们可用tablefield(existfalse)来注解,演示如下:...
吾爱出品,文件分类助手,高效管理您的 PC 资源库
在日常使用电脑的过程中,文件杂乱无章常常让人感到困扰。无论是桌面堆积如山的快捷方式,还是硬盘中混乱的音频、视频、文档等资源,都急需一种高效的整理方法。文件分类助手应运而生,它是一款文件管理工具,能够快速、智…...
关于瑞芯微开发工具(RKDevTool)刷机下载Boot失败原因的研究
昨天发了文章《网心云OEC/OEC-turbo刷机问题——刷机教程、救砖方法、技术要点及下载boot失败异常解决尝试》,其中有关于刷机各种问题的一些解决方法。 网心云OEC/OEC-turbo刷机问题——刷机教程、救砖方法、技术要点及下载boot失败异常解决尝试-CSDN博客文章浏览阅…...
web爬虫笔记:js逆向案例十一 某数cookie(补环境流程)
web爬虫笔记:js逆向案例十一 某数cookie(补环境流程) 一、获取网页数据请求流程 二、目标网址、cookie生成(逐步分析) 1、目标网址:aHR0cHM6Ly9zdWdoLnN6dS5lZHUuY24vSHRtbC9OZXdzL0NvbHVtbnMvNy9JbmRleC5odG1s 2、快速定位入口方法 1、通过脚本监听、hook_cookie等操作可…...
浅谈 Vue3 中的设计模式
设计模式是软件开发中的一种最佳实践,它提供了解决特定问题的通用解决方案。通过合理运用设计模式,可以提高代码的可维护性、可扩展性和可读性。在 Vue3 的源码中,设计模式被广泛应用于各个模块中,充分体现了其在现代前端框架中的…...
Unix Domain Socket、IPC、RPC与gRPC的深度解析与实战
Unix Domain Socket、IPC、RPC与gRPC的深度解析与实战 引言 在分布式系统和本地服务通信中,进程间通信(IPC)与远程过程调用(RPC)是核心能力。本文将深入剖析 Unix Domain Socket(UDS)、IPC、RP…...
07_JavaScript函数作用域_递归
目录 一、作用域(重点) 二、变量的使用规则 (重点) 2.1 访问规则 2.2 赋值规则 三、递归函数 (难点) 了解 四、对象 4.1 对象的创建 一、作用域(重点) 什么是作用域 ? 作用…...
.gitignore使用指南
.gitignore使用指南 目录 什么是.gitignore为什么需要.gitignore如何创建.gitignore文件.gitignore文件的语法规则 忽略单个文件忽略目录忽略特定类型的文件不忽略特定文件或目录递归匹配 示例.gitignore文件注意事项更多特殊场景匹配规则 忽略多个特定后缀的文件忽略特定目录…...
Excel多级联动下拉菜单的自动化设置(使用Python中的openpyxl模块)
1 主要目的 在Excel中,经常会遇到需要制作多级联动下拉菜单的情况,要求单元格内填写的内容只能从指定的多个选项中进行选择,并且需要设置多级目录,其中下级目录的选项内容要根据上级目录的填写内容确定,如下图所示&am…...
深入解析 Spring Framework 5.1.8.RELEASE 的源码目录结构
深入解析 Spring Framework 5.1.8.RELEASE 的源码目录结构 1. 引言 Spring Framework 是 Java 领域最流行的企业级开发框架之一,广泛用于 Web 开发、微服务架构、数据访问等场景。本文将深入解析 Spring Framework 5.1.8.RELEASE 的源码目录结构,帮助开…...
excalidraw画图工具——背景画布有无格子设置
服啦找了大半天,愣是没找到 toggle grid : 切换格子… Excalidraw的背景格子 只要右键,将这个勾取消就好了?...
计算机组成原理———I\O系统精讲<1>
本篇文章主要介绍输入输出系统的发展概况 一.输入输出系统的发展概况 1.早期阶段 该阶段的特点是I/O设备与主存交换信息都必须通过CPU 当时的I/O设备有如下几个特点: (1)每个I\O设备都必须配有一套独立的逻辑电路与CPU相连,用来…...
[数据结构] 动态顺序表应用
可扩容顺序表顺序表 SeqList.hSeqList.cTest.c 动态顺序表能够根据数据存储的需要动态地管理内存空间。 SeqList.h #include<stdio.h> #include<stdlib.h>//静态顺序表 //小了不够用,多了浪费 //#define N 10 //typedef int SLDatatype; //struct SeqL…...
MinIO-对象存储方案
MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。 MinIO是一个非常轻量的服务…...
装饰器模式 (Decorator Pattern)
装饰器模式 (Decorator Pattern) 是一种结构型设计模式,它动态地给一个对象添加一些额外的职责,就增加功能来说,装饰器模式相比生成子类更为灵活。 一、基础 1 意图 动态地给一个对象添加一些额外的职责。 就增加功能来说,装饰器模式相比生成子类更为灵活。 2 适用场景 当…...
手动配置树莓派wifi联网连接热点手机热点
手动配置树莓派wifi联网连接热点 修改wifi配置文件: 运行命令: sudo nano /etc/wpa_supplicant/wpa_supplicant.conf 在文件中添加无线网配置信息: ctrl_interfaceDIR/var/run/wpa_supplicant GROUPnetdev update_config1 countryCN network{ ssid”你的无线网名字” psk”…...
【学习笔记】麦肯锡《超级智能体:赋能人们释放人工智能的全部潜力》
麦肯锡《超级智能体:赋能人们释放人工智能的全部潜力》报告的学习笔记: 报告背景与意义 • 科技发展趋势:随着人工智能技术的飞速发展,其在各行业的应用逐渐深入,麦肯锡的这份报告正是基于这一背景,旨在深入…...
ENSP学习day9
ACL访问控制列表实验 ACL(Access Control List,访问控制列表)是一种用于控制用户或系统对资源(如文件、文件夹、网络等)访问权限的机制。通过ACL,系统管理员可以定义哪些用户或系统可以访问特定资源&#x…...
文章记单词 | 第2篇(六级)
一,单词释义 story:名词(n.)故事;小说;(真实情况的)叙述,描述;楼层(美语写法,英式英语为 storey)stress:名词…...
【C++动态规划 数学】1039. 多边形三角剖分的最低得分|2130
本文涉及知识点 C动态规划 数学 LeetCode1039. 多边形三角剖分的最低得分 你有一个凸的 n 边形,其每个顶点都有一个整数值。给定一个整数数组 values ,其中 values[i] 是第 i 个顶点的值(即 顺时针顺序 )。 假设将多边形 剖分 …...
5.go切片和map
切片的概念 数组和切片相比较切片的长度是不固定的,可以追加元素,在追加时可能会使切片的容量增大,所以可以将切片理解成 "动态数组",但是,它不是数组,而是构建在数组基础上的更高级的数据结构。…...
【Linux网络-多路转接select】
代码:https://gitee.com/nanyi-c/linux/tree/master/day50 一、I/O多路转接之select 1.初始select 系统提供select函数来实现多路复用输入/输出模型 select系统调用是用来让我们的程序监视多个文件描述符的状态变化的程序会停在select这里等待,直到被…...
cmd命令查看电脑的CPU、内存、存储量
目录 获取计算机硬件的相关信息的命令分别的功能结果展示结果说明获取计算机硬件的相关信息的命令 wmic cpu get name wmic memorychip get capacity wmic diskdrive get model,size,mediaType分别的功能 获取计算机中央处理器(CPU)的名称 获取计算机内存(RAM)芯片的容量…...
LVS的 NAT 模式实现 3 台RS的轮询访问
使用LVS的 NAT 模式实现 3 台RS的轮询访问 1.配置 RS(NAT模式)2. 配置 LVS 主机(仅主机、NAT模式)2.1 配置仅主机网卡(192.168.66.150/24 VIP )2.2 配置 NAT 网卡(192.168.88.6/24 DIPÿ…...
phpcms版AI自动发文插件,自动创作,自动配图,自动发布,支持多种大模型
phpcms版本的AI自动发文插件1.0.0版,支持自动写文章,自动配图,自动发布。目前支持DeepSeek,豆包,通义千问,文心一言,讯飞星火,KIMI,腾讯混元登大模型AI。同时有自定义字段…...
