服务器响应中的 HTTP 状态码是一个 3 位整数,指示请求的结果。第一位数字对响应类型进行分类:
| 序号 | 代码类别 | 描述 |
|---|
| 1 | 1xx: 信息 | 已收到请求,继续处理。这些是临时响应,通常后跟最终响应。 |
| 2 | 2xx: 成功 | 操作已成功接收、理解并接受。 |
| 3 | 3xx: 重定向 | 用户代理需要采取进一步行动来完成请求。 |
| 4 | 4xx: 客户端错误 | 请求包含错误的语法或服务器无法完成。 |
| 5 | 5xx: 服务器错误 | 服务器因服务器端错误未能完成看似有效的请求。 |
HTTP 状态码是可扩展的。应用程序至少应通过理解其类别来准备处理任何状态码,以下列出了常见和重要的代码。
| 状态码及原因短语 | 描述 |
|---|
| 100 Continue | 服务器已收到请求头部字段,客户端应继续发送请求主体(例如,在 POST 请求中)。如果请求已完成,则忽略此响应。 |
| 101 Switching Protocols | 服务器正根据客户端的请求(通过 Upgrade 头部字段)切换协议。常用于 WebSockets。 |
| 102 Processing (WebDAV) | 服务器已收到并正在处理请求,但尚无可用响应。防止客户端超时。 |
| 103 Early Hints | 用于在最终 HTTP 消息之前发送一些响应头部字段。允许浏览器在服务器仍在准备主要响应时开始预加载资源。 |
| 状态码及原因短语 | 描述 |
|---|
| 200 OK | 请求已成功。200 响应中发送的负载取决于请求方法(例如,GET 方法返回资源,HEAD 方法返回状态)。 |
| 201 Created | 请求已完成,结果是创建了新资源。新资源的 URI 通常在 Location 头部字段中返回。 |
| 202 Accepted | 请求已被接受处理,但处理尚未完成。请求最终可能被执行,也可能不被执行。适用于异步操作。 |
| 203 Non-Authoritative Information | 返回的元信息来自本地或第三方副本,而非源服务器,可能已过时。 |
| 204 No Content | 服务器成功处理了请求,但不返回任何内容。常用于 DELETE 请求或不返回主体(body)的 PUT 请求。 |
| 205 Reset Content | 服务器成功处理了请求,并告知用户代理重置导致发送此请求的文档视图(例如,清除表单)。 |
| 206 Partial Content | 服务器因客户端发送的 Range 头部字段而仅提供部分资源(字节服务)。 |
| 状态码及原因短语 | 描述 |
|---|
| 300 Multiple Choices | 请求有多个可能的响应。用户代理或用户应选择其中之一。(罕用)。 |
| 301 Moved Permanently | 目标资源已被分配一个新的永久 URI,对此资源的任何未来引用都应使用返回的 URI 之一。搜索引擎会更新其链接。 |
| 302 Found | 目标资源暂时位于不同的 URI 下。由于此重定向可能会偶尔更改,客户端应继续对未来的请求使用有效的请求 URI。历史上,浏览器在 302 响应时会将 POST 方法更改为 GET 方法;请使用 303 或 307 来实现更清晰的语义。 |
| 303 See Other | 对请求的响应可以在不同的 URI 下找到,并且应使用 GET 方法检索该资源。通常在 POST 请求后使用,以防止重复提交。 |
| 304 Not Modified | 收到了条件 GET 或 HEAD 请求,且资源未修改。客户端可以使用其缓存版本。无消息主体。 |
| 305 Use Proxy(已废弃) | 请求的资源必须通过 Location 字段指定的代理访问。因安全顾虑而废弃。 |
| 307 Temporary Redirect | 目标资源暂时位于不同的 URI 下。如果用户代理自动重定向到该 URI,则不得更改请求方法。(例如,POST 仍然是 POST)。 |
| 308 Permanent Redirect | 目标资源已被分配一个新的永久 URI。如果用户代理自动重定向到该 URI,则不得更改请求方法。(例如,POST 仍然是 POST)。 |
| 状态码及原因短语 | 描述 |
|---|
| 400 Bad Request | 服务器因被认为是客户端错误(例如,请求语法格式错误、请求消息帧无效或欺骗性请求路由)而无法或不会处理请求。 |
| 401 Unauthorized | 请求尚未应用,因为它缺少目标资源的有效身份验证凭据。通常伴随 WWW-Authenticate 头部字段。 |
| 402 Payment Required | 保留供将来使用。有时由 API 用于指示支付问题。 |
| 403 Forbidden | 服务器理解请求,但拒绝授权。身份验证无济于事,请求不应重复。 |
| 404 Not Found | 服务器未找到与 Request-URI 匹配的任何内容。未指示情况是临时还是永久的。 |
| 405 Method Not Allowed | Request-Line 中指定的方法不允许用于 Request-URI 标识的资源。响应必须包含一个 Allow 头部字段,其中包含请求资源的有效方法列表。 |
| 406 Not Acceptable | 服务器无法生成与请求的主动内容协商头部字段(例如 Accept、Accept-Charset)中定义的可接受值列表匹配的响应。 |
| 407 Proxy Authentication Required | 类似于 401,但指示客户端必须首先向代理进行身份验证。代理必须发送一个 Proxy-Authenticate 头部字段。 |
| 408 Request Timeout | 服务器在准备等待的时间内未收到完整的请求消息。 |
| 409 Conflict | 由于与目标资源的当前状态冲突,请求无法完成。常用于会产生冲突的 PUT 请求。 |
| 410 Gone | 目标资源在源服务器上不再可用,并且这种情况可能是永久性的。如果服务器不知道或无法确定情况是否永久,则应使用状态码 404 (Not Found)。 |
| 411 Length Required | 服务器拒绝接受没有定义的 Content-Length 头部字段的请求。 |
| 412 Precondition Failed | 请求头部字段中给出的一项或多项条件(例如 If-Match、If-Unmodified-Since)在服务器上测试时评估为假。 |
| 413 Payload Too Large | (以前称为 Request Entity Too Large)服务器拒绝处理请求,因为请求负载(payload)大于服务器愿意或能够处理的大小。 |
| 414 URI Too Long | (以前称为 Request-URI Too Long)服务器拒绝提供服务,因为 Request-URI 长于服务器愿意解析的长度。 |
| 415 Unsupported Media Type | 服务器拒绝提供服务,因为负载(payload)的格式不受目标资源上此方法支持。 |
| 416 Range Not Satisfiable | (以前称为 Requested Range Not Satisfiable)客户端请求了文件的一部分(例如,使用 Range 头部字段),但服务器无法提供该部分。 |
| 417 Expectation Failed | 此服务器无法满足 Expect 请求头部字段中给出的期望。 |
| 418 I’m a teapot | 一个愚人节笑话 RFC (RFC 2324)。虽然幽默,但有时被开发者用作彩蛋或特定错误状态。 |
| 422 Unprocessable Entity (WebDAV; RFC 4918) | 服务器理解请求实体(entity)的内容类型,并且请求实体的语法正确,但无法处理其中包含的指令(例如,无效字段值等语义错误)。 |
| 429 Too Many Requests | 用户在给定时间内发送了太多请求(即“限流”)。可能包含一个 Retry-After 头部字段来指示在新请求之前需要等待多长时间。 |
| 状态码及原因短语 | 描述 |
|---|
| 500 Internal Server Error | 一个通用错误消息,当遇到意外情况且没有更具体的合适消息时给出。 |
| 501 Not Implemented | 服务器无法识别请求方法或不具备完成请求的能力。这通常意味着未来可用(例如,Web 服务 API 的新功能)。 |
| 502 Bad Gateway | 服务器作为网关或代理时,在尝试完成请求时从其访问的内部服务器收到了无效响应。 |
| 503 Service Unavailable | 服务器因临时过载或计划维护而当前无法处理请求,这种情况可能在一段时间后缓解。可能包含一个 Retry-After 头部字段。 |
| 504 Gateway Timeout | 服务器作为网关或代理时,在尝试完成请求时未从其需要访问的上游服务器收到及时响应。 |
| 505 HTTP Version Not Supported | 服务器不支持或拒绝支持请求消息中使用的 HTTP 协议版本。 |