HTTP 状态码查询
HTTP 状态码完整参考,包含含义、使用场景和常见原因
1xx 信息(2)
100 Continue
服务器已收到请求头,客户端应继续发送请求体
状态码: 100 Continue
含义: 服务器已接收请求头部分,客户端可以继续发送请求体。
常见于: 大文件上传前的预检。101 Switching Protocols
服务器同意切换协议(如 WebSocket)
状态码: 101 Switching Protocols
含义: 服务器同意客户端的协议切换请求。
常见于: HTTP 升级为 WebSocket 连接。
响应头示例:
Upgrade: websocket
Connection: Upgrade2xx 成功(3)
200 OK
请求成功,服务器返回了请求的数据
状态码: 200 OK
含义: 请求成功。
GET → 返回请求的资源
POST → 返回处理结果
PUT → 返回更新后的资源201 Created
请求成功,服务器创建了新资源
状态码: 201 Created
含义: 资源创建成功。
常见于: POST 请求创建新用户、新文章等。
响应通常包含:
Location: /api/users/123 (新资源的URL)204 No Content
请求成功,但没有返回内容
状态码: 204 No Content
含义: 请求成功处理,但不需要返回内容。
常见于: DELETE 删除成功、PUT 更新成功。3xx 重定向(5)
301 Moved Permanently
资源已永久移动到新 URL
状态码: 301 Moved Permanently
含义: 资源已永久转移,以后都用新 URL。
搜索引擎会更新索引到新 URL。
响应头:
Location: https://new-domain.com/page
Nginx 配置:
return 301 https://new-domain.com$request_uri;302 Found
资源临时移动到新 URL
状态码: 302 Found
含义: 资源临时重定向,下次还用原 URL。
常见于: 登录后跳转、临时维护。
响应头:
Location: /login304 Not Modified
资源未修改,使用浏览器缓存
状态码: 304 Not Modified
含义: 资源没有变化,直接用本地缓存。
节省带宽,加快页面加载。
相关请求头:
If-Modified-Since: Wed, 21 Oct 2024 07:28:00 GMT
If-None-Match: "33a64df551425fcc55e4d42a148795d9"307 Temporary Redirect
临时重定向,保持原请求方法
状态码: 307 Temporary Redirect
含义: 临时重定向(保持 POST/PUT 等方法不变)。
与 302 的区别: 307 保证不会把 POST 改成 GET。308 Permanent Redirect
永久重定向,保持原请求方法
状态码: 308 Permanent Redirect
含义: 永久重定向(保持原始请求方法)。
与 301 的区别: 308 保证不会把 POST 改成 GET。4xx 客户端错误(9)
400 Bad Request
请求格式错误,服务器无法理解
状态码: 400 Bad Request
含义: 请求有语法错误或参数无效。
常见原因:
- JSON 格式错误
- 缺少必填参数
- 参数类型不对
- URL 格式错误401 Unauthorized
未认证,需要登录
状态码: 401 Unauthorized
含义: 请求需要身份认证。
常见原因:
- 未携带 Token
- Token 已过期
- Token 无效
响应头通常包含:
WWW-Authenticate: Bearer403 Forbidden
已认证但没有权限访问
状态码: 403 Forbidden
含义: 服务器理解请求,但拒绝执行。
401 vs 403:
401 = 你是谁?(未登录)
403 = 我知道你是谁,但你没权限。404 Not Found
请求的资源不存在
状态码: 404 Not Found
含义: 服务器找不到请求的资源。
常见原因:
- URL 路径拼错
- 资源已被删除
- 路由未定义405 Method Not Allowed
请求方法不被允许
状态码: 405 Method Not Allowed
含义: 该 URL 不支持当前请求方法。
例如: 对只支持 GET 的接口发了 POST。
响应头:
Allow: GET, HEAD409 Conflict
请求与当前资源状态冲突
状态码: 409 Conflict
含义: 请求与服务器当前状态冲突。
常见于: 用户名已存在、版本冲突。413 Payload Too Large
请求体超出服务器限制
状态码: 413 Payload Too Large
含义: 请求体太大,超过服务器限制。
常见于: 上传大文件。
Nginx 调大限制:
client_max_body_size 100M;422 Unprocessable Entity
请求格式正确但语义错误
状态码: 422 Unprocessable Entity
含义: 请求语法正确,但内容无法被处理。
常见于: 表单验证失败(邮箱格式不对等)。
与 400 的区别:
400 = 格式都不对
422 = 格式对了但内容不对429 Too Many Requests
请求频率超过限制
状态码: 429 Too Many Requests
含义: 客户端发送请求过多(限流)。
响应头通常包含:
Retry-After: 60 (60秒后重试)5xx 服务器错误(4)
500 Internal Server Error
服务器内部错误
状态码: 500 Internal Server Error
含义: 服务器遇到未知错误,无法完成请求。
常见原因:
- 代码抛出未捕获的异常
- 数据库连接失败
- 空指针异常
- 配置文件错误502 Bad Gateway
网关/代理从上游收到无效响应
状态码: 502 Bad Gateway
含义: 反向代理收到上游服务器的无效响应。
常见原因:
- 后端服务挂了
- 后端服务正在重启
- Nginx 代理配置错误503 Service Unavailable
服务暂时不可用
状态码: 503 Service Unavailable
含义: 服务器暂时无法处理请求。
常见原因:
- 服务器过载
- 正在维护
- 数据库连接池耗尽
响应头:
Retry-After: 300504 Gateway Timeout
网关/代理等待上游响应超时
状态码: 504 Gateway Timeout
含义: 反向代理等待上游服务器响应超时。
常见原因:
- 后端处理时间太长
- 网络问题
Nginx 调大超时:
proxy_read_timeout 300s;