目录
一图胜千言:HTTP核心机制图解
一、HTTP本质:通信的桥梁
定义:超文本传输协议(HyperText Transfer Protocol)
定位:应用层协议,基于TCP/IP协议栈
核心作用:规范客户端(浏览器)与服务器间的数据交换格式
二、五大核心特性解析
请求-响应模型
经典流程:客户端:GET /index.html HTTP/1.1 服务端:HTTP/1.1 200 OK → <html>...</html>
特点:客户端主动发起,服务器被动响应
2.无状态协议
痛点:服务器不记忆用户状态(如登录信息)
解决方案:
Cookie
:客户端存储的小型数据(4KB限制)Session
:服务端存储状态(Session ID通过Cookie传递)JWT
:现代分布式系统常用方案
3.URL:资源的身份证
https://www.example.com:443/path/page?query=param#fragment
├─ 协议 └─ 域名 └─端口└─路径 └─查询参数 └─锚点
特殊字符需URL编码(如空格→
%20
)
4.请求方法:操作语义化
方法 | 幂等性 | 安全 | 典型应用场景 |
---|---|---|---|
GET | ✔️ | ✔️ | 获取资源(查询操作) |
POST | ✘ | ✘ | 提交数据(创建资源) |
PUT | ✔️ | ✘ | 完整更新资源 |
PATCH | ✘ | ✘ | 局部更新资源 |
DELETE | ✔️ | ✘ | 删除资源 |
幂等性:多次执行效果相同
5.状态码:服务器的反馈语言
1xx
:信息类(如101 Switching Protocols)2xx
:成功200 OK:标准成功响应
201 Created:资源创建成功
204 No Content:响应无body(删除成功)
3xx
:重定向301 Moved Permanently:永久重定向
302 Found:临时重定向
304 Not Modified:缓存有效(性能优化关键!)
4xx
:客户端错误400 Bad Request:请求语法错误
401 Unauthorized:未认证
403 Forbidden:无权限
404 Not Found:资源不存在
5xx
:服务器错误500 Internal Server Error:通用服务器错误
502 Bad Gateway:网关错误
503 Service Unavailable:服务不可用
三、HTTP头部:隐藏的控制中心
GET /api/data HTTP/1.1
Host: api.example.com
User-Agent: Mozilla/5.0
Accept: application/json
Authorization: Bearer xxxxxxx
关键头部:
Content-Type
:数据类型(text/html
,application/json
)Cache-Control
:缓存策略(max-age=3600
)Set-Cookie
:设置客户端CookieETag
:资源标识(缓存验证利器)
四、连接管理:性能关键点
HTTP/1.1 持久连接
默认保持连接:
Connection: keep-alive
管线化(pipelining):并行发送请求(实践中受限)
2. HTTP/2 革命性改进
二进制分帧
多路复用:解决队头阻塞
头部压缩(HPACK算法)
服务器推送
五、HTTPS:安全的HTTP
核心机制:
非对称加密:建立安全连接
对称加密:传输加密数据
数字证书:验证服务器身份
开发者必知实践技巧
用开发者工具调试(Chrome DevTools):
查看Network面板中的请求/响应详情
模拟慢速网络(Throttling)
2.缓存策略优化:
Cache-Control: public, max-age=31536000
ETag: "33a64df551425fcc55e4d42a148795d9"
3. RESTful API设计原则:
资源导向(URI代表资源)
HTTP方法对应CRUD操作
状态码精确表达结果
经典面试题:GET与POST的本质区别?
答案:
GET参数在URL中,POST在请求体
GET有长度限制(浏览器约2KB),POST无限制
GET幂等适合查询,POST非幂等适合修改
GET可缓存,POST默认不缓存