Skip to content

Http 协议

介绍

HTTP(HyperText Transfer Protocol,超文本传输协议)是用于从 Web 服务器传输超文本(如 HTML、CSS、JS、图片等)到客户端(如浏览器)的 应用层协议

特点

  • 无状态(Stateless)

    • 每个 HTTP 请求都是独立的,服务器不会记住之前的请求(需借助 Cookie/Session 维持状态)。
  • 基于请求-响应模型(Request-Response)

    • 客户端发送请求,服务器返回响应。
  • 可扩展性强

    • 支持自定义头部(Headers)和多种数据格式(JSON、XML 等)。

默认端口

HTTP:80

HTTPS(加密 HTTP):443

请求和响应结构

术语说明
Headers简写或泛称(常见于 curl、Postman)
HTTP Headers更完整说法
元信息 (Metadata)有些文档会用“元数据”描述 Header 信息
报文头部在中文资料中经常出现的叫法

HTTP 请求结构(Header)

http
GET /index.html HTTP/1.1            # 请求行:方法 URL HTTP版本
Host: www.example.com               # 请求头部开始
User-Agent: Mozilla/5.0
Accept: text/html
Content-Type: application/json      # 请求头部结束
                                    # 空行,分隔头部和请求体
{"name": "example", "id": 123}      # 请求体(可选,常用于POST、PUT等方法)

HTTP 响应结构

常见别名或等价术语

术语说明
Body简称(最常见)
Payload更偏向语义上“负载”(强调传递的数据内容)
Entity Body在 HTTP/1.1 规范中用于区分 header 和 body
请求负载(Payload)中文常见译法
消息体(Message Body)技术文档中也有使用
http
HTTP/1.1 200 OK                     # 状态行:HTTP版本 状态码 状态消息
Date: Mon, 23 May 2023 22:38:34 GMT # 响应头部开始
Server: Apache/2.4.1
Content-Type: text/html
Content-Length: 138                 # 响应头部结束
                                    # 空行,分隔头部和响应体
<!DOCTYPE html>                     # 响应体,包含请求的资源
<html>
<head>
    <title>Example Page</title>
</head>
<body>
    <h1>Hello, World!</h1>
</body>
</html>

状态码

1xx 信息性状态码

状态码名称描述示例场景
100Continue服务器已收到请求头,客户端应继续发送请求体上传大文件时,服务器确认可以接收数据继续传输
101Switching Protocols服务器根据客户端的请求切换协议从 HTTP 升级到 WebSocket 连接时

2xx 成功状态码

状态码名称描述示例场景
200OK请求成功成功获取网页、API 成功返回数据
201Created请求已完成,新资源已创建成功提交表单创建新用户、POST 请求创建新资源
204No Content服务器成功处理请求,但没有返回任何内容删除操作成功、保存设置成功但不需要刷新页面

3xx 重定向状态码

状态码名称描述示例场景
301Moved Permanently请求的资源已永久移动到新位置网站域名更改、URL 结构永久调整
302Found请求的资源临时从不同 URI 响应请求临时重定向到登录页、支付完成后重定向回商店
304Not Modified资源未修改,可使用缓存版本浏览器请求页面时使用 If-Modified-Since 获取缓存资源

4xx 客户端错误状态码

状态码名称描述示例场景
400Bad Request服务器无法理解请求的格式提交的 JSON 格式错误、URL 参数格式不正确
401Unauthorized请求未授权访问需要登录的 API、token 过期
403Forbidden服务器拒绝请求用户无权访问特定资源、IP 被封禁
404Not Found请求的资源不存在访问已删除的页面、API 端点错误
405Method Not Allowed请求方法不允许对只读资源使用 POST 方法、对只能 POST 的接口使用 GET
429Too Many Requests客户端发送了太多请求API 限流保护、爬虫访问频率过高

5xx 服务器错误状态码

状态码名称描述示例场景
500Internal Server Error服务器内部错误服务器代码异常、数据库连接失败
502Bad Gateway服务器作为网关时收到了无效响应负载均衡器无法连接到后端服务、上游服务返回错误
503Service Unavailable服务器暂时不可用服务器维护中、系统过载
504Gateway Timeout作为网关的服务器请求超时代理服务器等待后端服务响应超时

Last updated:

Released under the MIT License.