HTTP 协议核心知识点梳理
摘要:HTTP 是互联网的基础协议。虽然每天都在用,但很多细节(如请求方法、缓存策略、状态码语义)容易被忽视。本文结合 Wireshark 抓包数据,重新梳理核心概念,帮助理解理论在实际中的应用。
1. 常见的请求方法
除了最常用的 GET 和 POST,HTTP 还定义了一套完整的动词来操作资源:
- GET:获取资源,参数拼在 URL 后,会被浏览器缓存。
- POST:提交数据,参数在请求体中,适合传输敏感信息或大文件。
- PUT:全量更新资源(如果资源不存在则创建)。
- DELETE:删除指定资源。
2. 常见状态码
除了 200 OK 和 404 Not Found,以下几个在生产环境中非常重要:
- 200 OK:请求成功,服务器返回了请求的资源。
- 301 Moved Permanently:永久重定向,SEO 权重会转移到新 URL。
- 304 Not Modified:利用浏览器缓存,服务器不返回实体内容,节省带宽。
- 401 Unauthorized:需要身份验证,通常配合 WWW-Authenticate 响应头使用。
- 502 Bad Gateway:通常是 Nginx 后面的后端服务(如 Tomcat/Node.js)挂了或超时。
3. 缓存机制
合理配置缓存策略可以显著提升首屏加载速度。HTTP 缓存分为两类:
- 强缓存:通过
Cache-Control: max-age=3600或Expires控制,命中时直接返回 200,不发请求。 - 协商缓存:通过
Last-Modified/If-Modified-Since或ETag/If-None-Match控制,命中时返回 304,不返回实体内容。
优先级:强缓存 > 协商缓存。实际项目中,通常对静态资源(JS/CSS/图片)设置强缓存,对 HTML 文件设置协商缓存。
4. 实战:Wireshark 抓包技巧
在 Wireshark 中过滤 HTTP 请求非常简单:
http.request.method == "POST" && http.host == "example.com"
通过抓包可以清晰看到请求头中的 Cookie、Authorization 等字段,以及响应头中的缓存控制指令,是排查问题的利器。
(注:Wireshark 抓包图解正在制作中,后续会补充更多可视化案例...)