HTTP (超文本传输协议)
约 5 分钟阅读
最后更新: 2026-04-12
什么是 HTTP
HTTP (HyperText Transfer Protocol,超文本传输协议) 是规定 Web 浏览器与服务器之间如何交换数据的通信协议。1991 年,Tim Berners-Lee 在创建万维网时设计了 HTTP/0.9,最初仅用于传输 HTML 文档。如今,HTTP 承载着从 HTML 页面、图片到 JSON API 响应和流媒体视频在内的所有 Web 资源。
当你在浏览器地址栏输入 URL 时,浏览器会向服务器发送 HTTP 请求,服务器处理后返回 HTTP 响应,这一往返过程是每个网页显示的基本机制。HTTP 是无状态协议,每个请求都是独立的,不携带之前交互的记忆。维持登录状态等功能需要借助 Cookie 或认证令牌等机制。
请求与响应的结构
HTTP 通信遵循简单的客户端-服务器模型:客户端发送请求,服务器返回响应。
GET 请求用于获取资源,不包含请求体。POST 用于提交数据 (表单提交、API 调用),请求体中携带数据。REST API 还广泛使用 PUT (更新)、DELETE (删除) 和 PATCH (部分更新)。
主要状态码
HTTP 状态码是三位数字,用于分类服务器的响应结果。首位数字决定类别。
200 OK 表示请求成功。201 Created 确认新资源已创建。204 No Content 表示成功但无响应体 (常见于 DELETE 操作后)。301 Moved Permanently 表示永久 URL 变更,搜索引擎会将排名转移到新 URL。302 Found 是临时重定向。304 Not Modified 告知客户端缓存版本仍然有效。400 Bad Request 表示请求语法错误。401 Unauthorized 需要认证。403 Forbidden 拒绝访问。404 Not Found 资源不存在。429 Too Many Requests 超出速率限制。500 Internal Server Error 是通用服务器错误。502 Bad Gateway 反向代理从后端收到无效响应。503 Service Unavailable 服务器因维护或过载暂时不可用。正确使用状态码在 API 设计中至关重要,它使客户端能够优雅地处理错误,并简化调试过程。
HTTP 版本演进
HTTP 在三十多年间经历了重大演进,每个版本都针对前一版本的性能瓶颈进行了改进。
HTTP/2 和 HTTP/3 实质上要求使用 HTTPS。主流浏览器不支持未加密的 HTTP/2 连接,而 HTTP/3 的 QUIC 协议内置了 TLS 1.3。协议的速度提升与安全增强是同步推进的。
HTTP 与 HTTPS 的关系
HTTP 以明文方式传输数据,网络路径上的任何人都可以窃听和篡改通信内容。HTTPS 在 HTTP 之上添加了 TLS 加密层,保护通信通道的安全。
- HTTP:使用端口 80。数据未加密。浏览器显示「不安全」警告。
- HTTPS:使用端口 443。TLS 加密。显示锁形图标,对 SEO 也有利。
虽然 HTTPS 已成为事实标准,但 HTTP 仍然是底层协议。请求-响应模型、方法、头部和状态码在两者中完全相同。HTTPS 只是将 HTTP 交换包裹在加密隧道中。理解 HTTP 基础对于使用 HTTPS、利用开发者工具调试以及设计 API 都是必不可少的。
常见误解
- HTTP 和 HTTPS 是完全不同的协议
- HTTPS 是在 HTTP 基础上添加 TLS 加密的扩展。请求-响应结构、方法和状态码完全相同。理解了 HTTP 就理解了 HTTPS 的运作机制,唯一的区别在于通信通道是否加密。
- 升级到 HTTP/2 或 HTTP/3 一定能让网站变快
- HTTP/2 的多路复用和 HTTP/3 的 QUIC 改善了网络层效率,但如果瓶颈在服务器端处理、数据库查询或前端渲染,感知速度可能不会改变。协议升级优化的是传输层,而非整个应用程序栈。