Post

HTTP协议--状态码

HTTP协议--状态码

HTTP 状态码是服务器对客户端请求的响应结果的标准化标识,由三位数字组成。它们分为五类,每类有特定的语义。以下是详细的分类和常见状态码的讲解:


1xx(信息响应)

表示请求已被接收,需要继续处理。

常见状态码

100 Continue
场景:客户端发送大文件前,服务器确认是否接受请求(需配合 Expect: 100-continue 请求头)。 • 示例:上传大文件时,客户端先发送请求头,服务器返回 100 Continue 后再发送文件体。

101 Switching Protocols
场景:服务器同意客户端请求,切换协议(如从 HTTP 升级到 WebSocket)。 • 示例Upgrade: websocket 请求头触发协议切换。


2xx(成功响应)

表示请求已成功被服务器接收、理解并处理。

常见状态码

200 OK
场景:标准成功响应,请求已成功完成。 • 示例:访问网页时返回 HTML 内容。

201 Created
场景:资源创建成功(如通过 POST 创建新用户)。 • 示例:RESTful API 中创建资源后返回 201 和新资源的 URL(Location 头)。

202 Accepted
场景:请求已接收,但尚未处理完成(适用于异步任务)。 • 示例:提交订单后,服务器返回 202 并异步处理支付。

204 No Content
场景:请求成功,但无返回内容(如删除资源成功)。 • 示例:DELETE 请求删除用户后返回 204

206 Partial Content
场景:分片下载或断点续传时返回部分内容。 • 示例:视频播放器通过 Range 头请求部分数据,服务器返回 206


3xx(重定向响应)

表示需要客户端进一步操作以完成请求。

常见状态码

301 Moved Permanently
场景:资源已永久移动到新 URL(浏览器会缓存新地址)。 • 示例:网站域名更换后,旧域名返回 301 指向新地址。

302 Found
场景:资源临时移动到新 URL(浏览器不会缓存,下次仍访问原地址)。 • 示例:未登录用户访问受限页面,临时重定向到登录页。

304 Not Modified
场景:协商缓存生效,资源未修改,客户端使用本地缓存。 • 示例:带 If-Modified-Since 头的请求,服务器返回 304

307 Temporary Redirect
场景:与 302 类似,但要求客户端保持请求方法不变(如 POST 请求重定向后仍用 POST)。 • 示例:表单提交后临时重定向到结果页。

308 Permanent Redirect
场景:与 301 类似,但要求客户端保持请求方法不变。 • 示例:API 端点永久迁移时使用 308


4xx(客户端错误)

表示客户端请求有误,服务器无法处理。

常见状态码

400 Bad Request
场景:请求语法或参数错误(如 JSON 格式错误)。 • 示例:API 请求体缺少必填字段。

401 Unauthorized
场景:需要身份验证(未提供有效凭证)。 • 示例:访问需要登录的页面时返回 401,并附带 WWW-Authenticate 头。

403 Forbidden
场景:服务器拒绝请求(身份已验证,但权限不足)。 • 示例:普通用户尝试访问管理员页面。

404 Not Found
场景:资源不存在(URL 错误或资源已被删除)。 • 示例:访问不存在的网页路径。

405 Method Not Allowed
场景:请求方法不被允许(如对只支持 GET 的接口发送 POST)。 • 示例:向只允许 GET 的 API 端点发送 DELETE 请求。

409 Conflict
场景:请求与服务器当前状态冲突(如重复创建资源)。 • 示例:注册用户时用户名已存在。

429 Too Many Requests
场景:客户端请求频率过高(限流)。 • 示例:API 接口触发速率限制后返回 429


5xx(服务器错误)

表示服务器处理请求时发生错误。

常见状态码

500 Internal Server Error
场景:服务器内部错误(如代码抛出未捕获的异常)。 • 示例:数据库连接失败导致请求处理中断。

501 Not Implemented
场景:服务器不支持请求的功能(如未实现的 HTTP 方法)。 • 示例:客户端请求 WebDAV 方法,但服务器未实现。

502 Bad Gateway
场景:代理服务器从上游服务器收到无效响应。 • 示例:反向代理(如 Nginx)连接后端服务超时。

503 Service Unavailable
场景:服务器暂时不可用(如维护或过载)。 • 示例:电商大促时服务器返回 503 并提示稍后重试。

504 Gateway Timeout
场景:代理服务器等待上游服务器响应超时。 • 示例:API 网关调用微服务超时后返回 504


特殊状态码

418 I’m a teapot
场景:幽默响应,源自 HTTP 愚人节玩笑(RFC 2324)。 • 示例:向支持此状态码的服务器发送煮咖啡请求。


总结

  1. 状态码分类
    • 1xx:信息响应,需继续操作。
    • 2xx:成功响应,请求已处理。
    • 3xx:重定向,需客户端跟进。
    • 4xx:客户端错误,请求不合法。
    • 5xx:服务器错误,服务端故障。
This post is licensed under CC BY 4.0 by the author.