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 |