Skip to content

HTTP 状态码

服务器响应中的 HTTP 状态码是一个 3 位整数,指示请求的结果。第一位数字对响应类型进行分类:

序号代码类别描述
11xx: 信息已收到请求,继续处理。这些是临时响应,通常后跟最终响应。
22xx: 成功操作已成功接收、理解并接受。
33xx: 重定向用户代理需要采取进一步行动来完成请求。
44xx: 客户端错误请求包含错误的语法或服务器无法完成。
55xx: 服务器错误服务器因服务器端错误未能完成看似有效的请求。

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 AllowedRequest-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 协议版本。