HTTP 协议

HTTP(超文本传输协议)是 Web 世界的通用语言:浏览器取网页、前后端调接口、RESTful API 通信都以它为基础。后端面试关于请求方法、状态码、无状态会话的问题几乎必考,掌握报文结构是阅读一切网络日志的起点。

HTTP 是什么

  • 基于 TCP 的应用层协议,默认端口 80(HTTPS 为 443)。
  • 采用请求—响应模型:客户端发请求,服务器回响应。
  • 无状态:服务器默认不记忆每次请求的上下文,状态靠 Cookie / Session / Token 补充。

请求报文结构

POST /api/login HTTP/1.1          ← 请求行: 方法 路径 版本
Host: www.example.com             ← 请求头(键值对)
Content-Type: application/json
Content-Length: 32
                                  ← 空行(分隔头与体)
{"user":"alice","pwd":"123"}      ← 请求体(POST 携带数据)

响应报文结构

HTTP/1.1 200 OK                   ← 状态行: 版本 状态码 短语
Content-Type: text/html; charset=utf-8
Content-Length: 1024              ← 响应头
                                  ← 空行
<html>…</html>                    ← 响应体

报文的整体轮廓可记成:起始行 + 头部 + 空行 + 主体

常用请求方法

方法语义是否幂等典型用途
GET获取资源查询列表、打开页面
POST提交数据/创建登录、下单、新增记录
PUT整体更新/替换覆盖更新资源
PATCH局部更新只改部分字段
DELETE删除资源删除记录

高频辨析:GET 参数放 URL、可被缓存、有长度限制;POST 参数放请求体、相对私密、默认不缓存。实际"GET 能否带 body"等细节常被追问,建议结合规范理解而非死记。

状态码分类

分类含义常见例子
1xx信息提示100 Continue
2xx成功200 OK、201 Created、204 无内容
3xx重定向301 永久、302 临时、304 未修改
4xx客户端错误400 参数错、401 未认证、403 无权限、404 不存在
5xx服务端错误500 内部错、502 网关错、503 服务不可用

记忆口诀:1 消息、2 成功、3 重定向、4 客户端、5 服务端。排障第一步永远是看状态码落在哪个区间。

无状态如何保持会话

  • Cookie:服务器经 Set-Cookie 下发标识,浏览器后续请求自动携带。
  • Session:会话数据存服务器内存/缓存,仅以 sessionId 关联客户端。
  • Token / JWT:把身份信息签名后交给客户端,服务端无状态、易横向扩展,适合分布式与前后端分离。

HTTP 版本演进

版本主要改进传输层
HTTP/1.1持久连接、管线化,应用最广TCP
HTTP/2多路复用、头部压缩、二进制分帧TCP
HTTP/3基于 QUIC,0-RTT 握手、抗丢包UDP

应用场景

凡前后端接口联调、抓包排查、网关鉴权都离不开 HTTP。日常排障套路:先看状态码区间,再看响应体错误信息,最后结合请求头(如认证、Content-Type)定位问题。

小结:HTTP 是"请求—响应、无状态"的文本协议。背熟五种常用方法、状态码五类区间、Cookie/Session/Token 的区别,再亲手抓一次包,Web 调试与面试都够用了。

笔记加载中…