HTTP 状态码分为多个类别,下面是常见的 HTTP 状态码及其含义,包括 3xx 重定向状态码的详细区别:
 
 
📌 HTTP 状态码分类
 
| 分类 | 状态码范围 | 说明 | 
|---|
| 1xx | 100-199 | 信息性状态码,表示请求已被接收,继续处理 | 
| 2xx | 200-299 | 成功状态码,表示请求成功 | 
| 3xx | 300-399 | 重定向状态码,表示客户端需要采取进一步操作 | 
| 4xx | 400-499 | 客户端错误,表示请求有问题 | 
| 5xx | 500-599 | 服务器错误,表示服务器无法处理请求 | 
 
 
📌 常见 HTTP 状态码
 
✅ 1xx(信息响应)
 
| 状态码 | 含义 | 说明 | 
|---|
| 100 | Continue(继续) | 服务器收到请求的初始部分,客户端可以继续发送请求 | 
| 101 | Switching Protocols(切换协议) | 服务器同意客户端的协议升级请求 | 
| 102 | Processing(处理中) | 服务器正在处理,但没有完成响应 | 
 
✅ 2xx(成功响应)
 
| 状态码 | 含义 | 说明 | 
|---|
| 200 | OK(成功) | 请求成功,通常用于 GET、POST 请求的成功响应 | 
| 201 | Created(已创建) | 请求成功,服务器创建了新资源(如 POST 创建新用户) | 
| 202 | Accepted(已接受) | 请求已接受,但尚未处理完成 | 
| 204 | No Content(无内容) | 请求成功但没有数据返回(如 DELETE 成功后) | 
 
✅ 3xx(重定向响应)
 
| 状态码 | 含义 | 说明 | 
|---|
| 301 | Moved Permanently(永久重定向) | 旧 URL 永久失效,浏览器/爬虫会更新为新地址 | 
| 302 | Found(临时重定向) | 旧 URL 仍然有效,每次请求都可能跳转到不同地址 | 
| 303 | See Other(查看其他地址) | 重定向到新地址,必须使用 GET 请求 | 
| 304 | Not Modified(未修改) | 资源未改变,使用浏览器缓存 | 
| 307 | Temporary Redirect(临时重定向) | 类似 302,但 不允许 改变 HTTP 方法(POST 仍然 POST) | 
| 308 | Permanent Redirect(永久重定向) | 类似 301,但 不允许 改变 HTTP 方法 | 
 
✅ 4xx(客户端错误)
 
| 状态码 | 含义 | 说明 | 
|---|
| 400 | Bad Request(错误请求) | 请求格式错误,服务器无法理解 | 
| 401 | Unauthorized(未授权) | 需要身份认证(如 API 需要 Token) | 
| 403 | Forbidden(禁止) | 服务器理解请求但拒绝执行(如权限不足) | 
| 404 | Not Found(未找到) | 服务器找不到请求的资源 | 
| 405 | Method Not Allowed(方法不允许) | 请求的方法(如 PUT)不被服务器支持 | 
 
✅ 5xx(服务器错误)
 
| 状态码 | 含义 | 说明 | 
|---|
| 500 | Internal Server Error(服务器内部错误) | 服务器发生错误,无法完成请求 | 
| 502 | Bad Gateway(错误网关) | 服务器作为网关/代理时,收到无效响应 | 
| 503 | Service Unavailable(服务不可用) | 服务器暂时不可用(如超载、维护) | 
| 504 | Gateway Timeout(网关超时) | 服务器作为网关/代理时,请求超时 | 
 
 
📌 重点:301 vs 302 vs 303 vs 307 vs 308
 
| 状态码 | 类型 | 是否永久 | 是否改变 HTTP 方法 | 适用场景 | 
|---|
| 301 | 永久重定向 | ✅ 是 | ✅ 可能改变(POST → GET) | 网址变更,SEO 友好 | 
| 302 | 临时重定向 | ❌ 否 | ✅ 可能改变(POST → GET) | 登录跳转等短期变化 | 
| 303 | 临时重定向 | ❌ 否 | ✅ 强制 GET 请求 | 处理表单后跳转 | 
| 307 | 临时重定向 | ❌ 否 | ❌ 不改变方法 | POST 不能变成 GET | 
| 308 | 永久重定向 | ✅ 是 | ❌ 不改变方法 | POST 不能变成 GET |