http协议原理--底层逻辑
客户端(Client)/服务器端(Server)
请求(Request)/响应(Response)
一、HTTP协议请求方法
请求方法包含15种之多
- HTTP/1.0 定义了3种基本方法:
GET、POST、HEAD。 - HTTP/1.1 新增了5种方法:
OPTIONS、PUT、DELETE、TRACE、CONNECT。 - 其他方法(如
PATCH、MOVE、COPY等)由扩展标准(如WebDAV)引入。
常用的4种:
| 序号 | 方法 | 描述 | 示例 | 备注 |
|---|---|---|---|---|
| 1 | GET | 请求指定资源,返回实体主体(通常用于读取数据)。 | GET /products/123 HTTP/1.1 | 参数在URL中传递,可被缓存,不应有副作用(如修改数据)。 |
| 2 | POST | 向服务器提交数据(如表单、文件),可能导致资源创建或修改。 | POST /users HTTP/1.1 |
数据在请求体中,无长度限制,适用于非幂等操作(如创建订单)。 |
| 3 | PUT | 替换目标资源的全部内容(全量更新)。 | PUT /products/123 HTTP/1.1 |
幂等方法(多次调用结果相同),若资源不存在可能创建新资源。 |
| 4 | DELETE | 请求删除指定资源。 | DELETE /products/123 HTTP/1.1 | 服务器可能返回204 No Content或404 Not Found。 |
思考并查找GET和POST的区别?
1.提交的方式不同
2.所支持的编码及格式不同
3.传输数据的大小不同
4.安全性
5.速度上
GET比POST 传输速度要快。
二、HTTP数据包的内容
1.「请求格式」:一个典型的HTTP请求包括以下部分:
•请求行(包含方法、URL、HTTP版本)
•请求头(包含请求的附加信息,如Host、User-Agent等)
•空行(请求头和请求体之间的分隔)
•请求体(可选,包含发送给服务器的数据)

2.「响应格式」:一个典型的HTTP响应包括以下部分:
•状态行(包含**HTTP版本、状态码、状态消息)
•响应头(包含响应的附加信息,如Content-Type、Content-Length等)
•空行(响应头和响应体之间的分隔)
•响应体(服务器返回的数据内容)

三、HTTP协议Header
1.User-Agent Header
更改成iPhone浏览器查看网页【规则】→【User-Agents】
2.Referer Header:统计用户来源和防盗链
很多网站上的图片链接设置了防盗链机制,从我的网站请求图片会返回403错误,但直接在浏览器中打开图片的url时却又正常。
突破防盗链机制:使用referrer-killerhttps://www.cnblogs.com/chutianyao/p/4225587.html
四、Web网页抓包和Fiddler修改包

父请求、子请求
五、Fiddler修改HTTP请求
全局断点:
1.在百度中输入关键字“前端”,利用修改请求,将关键字改为“test”
2.同理自己尝试一下,如何利用修改请求,将百度的url改为“163网易”
单个断点:
通过快捷键 Alt + q 可以将焦点定位到命令行输入框(小黑框)中
命令行中输入命令:bpu 服务器地址,按Enter键,例如:www.baidu.com;命令行中输入:bpu 退出断点
六、HTTP缓存
为什么要有 HTTP 缓存
304状态代表使用缓存,使用了缓存就没有响应体

F5、Ctrl+F5(强制刷新,不使用缓存的刷新)
服务器如何判断是否使用缓存?

1.最后修改时间
2.Etag字符串
浏览器缓存判定流程
(1)是否有强缓存(Expires/Cache-Control)且未过期?
✅ 命中 → 直接用本地副本。
❌ 过期 → 进入协商缓存。
(2)是否有协商缓存标识(ETag/Last-Modified)?
✅ 发送请求,带上标识。
资源没改 → 返回 304,用本地缓存。
资源更新 → 返回 200,替换本地缓存。
❌ 没有标识 → 只能重新请求。
缓存的存放位置
浏览器缓存分层存放,命中优先级不同:
Service Worker Cache(最高优先级,开发者可控)
Memory Cache(内存缓存,页面关闭即失效)Windows PowerShell窗口输入命令:wmic memcache list
Disk Cache(磁盘缓存,长期有效)控制面板→网络和Internet选项→Internet选项→常规→设置
Push Cache(HTTP/2 特有,生命周期极短)
前端应用设置
1.静态资源(JS/CSS/图片)例如:Cache-Control: public,max-age=31536000(强缓存)
2.HTML一般不做长期强缓存,因为要随时更新。例如:Cache-Control: no-cache
浏览器每次都会请求服务器,但如果内容没变,返回 304。
3.API数据
- 静态数据(如字典表):可长时间缓存。
- 动态数据(如用户信息):一般
no-cache或private, max-age=0。

浙公网安备 33010602011771号