http协议原理--底层逻辑

客户端(Client)/服务器端(Server)

请求(Request)/响应(Response)

一、HTTP协议请求方法

请求方法包含15种之多

  • HTTP/1.0 定义了3种基本方法:GETPOSTHEAD
  • HTTP/1.1 新增了5种方法:OPTIONSPUTDELETETRACECONNECT
  • 其他方法(如PATCHMOVECOPY等)由扩展标准(如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 Content404 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修改数据包原理

父请求、子请求

五、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-cacheprivate, max-age=0
posted @ 2025-12-28 13:40  sdbl  阅读(2)  评论(0)    收藏  举报