1xx Informational (信息性状态码)
100 Continue
100 Continue: 服务器已经接收到请求头,并且客户端应继续发送请求主体(在需要发送 body 的请求中)。这是为了允许客户端在发送大量数据前,先确认服务器愿意接收该请求。
101 Switching Protocols
101 Switching Protocols: 服务器根据客户端的请求,切换到另一个协议进行通信。例如,从 HTTP 切换到 WebSocket。
102 Processing
102(处理)状态码是用于的临时响应通知客户端服务器已经接受了完整的请求。但还没有完成。这个状态码只能发送当服务器有一个合理的期望,请求将花大量的时间去完成。作为指导,如果一个方法正在采取处理时间超过20秒(合理但任意的值)服务器应该返回一个102(处理中)响应。服务器必须在请求完成后发送最终响应。方法可能需要很长时间来处理,特别是那些支持Depth标头的方法。在这种情况下客户端在等待响应时可能会超时连接。来为了防止这种情况,服务器可能会返回一个102(正在处理)状态码向客户端指示服务器仍在处理方法。
103 Early Hints
103(早期提示)信息状态码指示的客户端,服务器可能会发送最终响应信息响应中包含的报头字段。通常,服务器将包含103发送的报头字段(早期提示)在最后的回应中也是如此。然而,在可能在某些情况下这是不可取的,例如当服务器了解到103(早期提示)响应中的报头字段是在发送最终响应之前不正确。客户端可以推测地评估包含在103(早期提示)在等待最终响应时响应。为例如,客户端可能会识别一个Link报头字段值包含关系类型“preload”并开始获取目标资源。然而,这些报头字段只提供提示客户端;它们不替换最终响应中的报头字段。除了性能优化之外,103(早期提示)响应的报头字段绝对不能影响最终的响应被处理。客户端绝对不能解释103 (Early)提示)响应头字段,就好像它们应用于信息响应本身(例如,作为103(早期提示)的元数据)响应)。服务器可以使用103(早期提示)响应来表示一些的标头字段的值响应。客户端不应该解释报头的不存在字段在103(早期提示)响应中作为推测报头字段不太可能是最终响应的一部分。下面的示例说明了一个典型的消息交换包含103(早期提示)响应。
104 Upload Resumption Supported(临时)
(临时注册:2024年11月13日,延期注册:2025年9月15日,2026年11月13日到期)
105-199
Unassigned(未赋值的)
2xx Success (成功状态码)
200 OK
200 OK: 最常见的成功状态码。表示请求成功,响应体包含了请求的资源。
201 Created
201 Created: 请求成功并且服务器创建了新的资源。通常在 POST 请求成功创建资源后返回。响应的 Location 头通常指向新创建的资源。
202 Accepted
202 Accepted: 服务器已接受请求,但尚未处理。最终该请求可能会也可能不会被执行。在异步操作或批处理场景中常见。
203 Non-Authoritative Information
203 Non-Authoritative Information (非权威信息): 服务器成功处理了请求,但返回的元信息(如头部)来自第三方拷贝,而非原始服务器。这通常发生在使用代理或缓存服务器时,且这些服务器没有对返回的资源进行实时验证。客户端在获取资源时应意识到这一点。注意: 自 HTTP/1.1 版本起,当服务器返回 200 OK 状态时,通常就表示信息是权威的,除非另有说明。因此 203 的使用场景相对有限。
204 No Content
204 No Content: 服务器成功处理了请求,但没有返回任何内容(即响应体为空)。通常用于 PUT/DELETE 请求成功后,或者客户端不需要更新视图的情况。
205 Reset Content
205 Reset Content (重置内容): 服务器成功处理了请求,且用户代理(通常是浏览器)应重置导致发送请求的文档视图。例如,客户端(如浏览器)在用户提交表单后,收到了 205 响应,就应该清除表单内容或刷新页面。与 204 类似,响应中不包含消息体。
206 Partial Content
206 Partial Content: 服务器成功处理了部分 GET 请求。常用于断点续传或范围请求(客户端发送了 Range 头)。
207 Multi-Status
207 Multi-Status (多状态) (WebDAV): 由 WebDAV 扩展定义 (RFC 4918)。响应体是一个 XML 消息,其中包含多个独立操作的状态信息。这使得服务器可以在一个响应中报告多个资源操作(如 PROPFIND 请求)的结果。例如,可以同时报告文件 A 成功创建 (201),文件 B 权限不足 (403),文件 C 不存在 (404)。
208 Already Reported
208 Already Reported (已报告) (WebDAV): 也是 WebDAV 扩展定义 (RFC 5842)。主要用于 PROPFIND 操作的响应中。当一个集合的成员(例如目录下的文件)在先前的响应中已经被报告过(例如,由于绑定关系),服务器可以使用 208 状态码来避免重复传输相同的成员信息,从而优化响应体积。
209-225 Unassigned
Unassigned(未赋值的)
226 IM Used
226 IM Used (IM 已使用) (Delta Encoding): (新增) 这个状态码是在 RFC 3229 "Delta encoding in HTTP" 中定义的。它表示服务器已经履行了资源的 GET 请求,并且响应是表示实例操纵 (Instance-Manipulation / IM) 应用结果的表示。服务器必须在响应中包含 A-IM 头字段,指示它支持并使用了哪种实例操纵。简单来说,这是一种更高级的缓存机制,服务器可以只发送自上次请求以来发生变化的部分(增量),而不是整个资源。客户端和服务器都需要支持这种 Delta Encoding 协议。
227-299 Unassigned
Unassigned(未赋值的)
3xx Redirection (重定向状态码)
300 Multiple Choices
300 Multiple Choices (多种选择): (新增) 服务器根据请求的资源(通常是 URI 没有明确指定具体文件时,例如请求目录 /images/),可以返回一个包含多个可选项(例如不同格式、语言或编码的资源)的列表。服务器可以选择返回其中一个选项,或者返回一个包含选项列表的页面供用户(或用户代理)选择。Location 头可能包含首选选项的 URI。这个状态码并不像 301/302 那样强制客户端自动跳转,更多是提供选择
301 Moved Permanently
301 Moved Permanently (永久重定向): 请求的资源已被永久移动到新位置。服务器返回此响应时,会自动将请求者转到新位置。搜索引擎索引工具会把旧地址替换为新地址。
302 Found
302 Found (临时重定向): 请求的资源临时从不同的 URI 响应请求。由于这样的重定向是临时的,客户端在后续的请求中还应该使用原始的 URI。注意: 虽然 HTTP/1.0 规范称之为 "Moved Temporarily",但很多浏览器将其当作 303 来处理(即使用 GET 方法请求新 URI)。
303 See Other
303 See Other (查看其它地址): 对应当前请求的响应可以在另一个 URI 上被找到,并且应当使用 GET 方法获取那个资源。通常在 POST/PUT 请求成功后,为了防止重复提交,服务器会返回 303 并指向一个结果页面。
304 Not Modified
304 Not Modified (未修改): 自从上次请求后,请求的资源未被修改。服务器返回此响应时,不会返回任何响应体。客户端可以使用之前缓存的资源。通常与 If-Modified-Since 或 If-None-Match 等条件请求头配合使用。
305 Use Proxy(已弃用)
305(使用代理): 状态码在该规范的前一个版本中定义,现在已弃用([RFC7231]的附录B)。
306 (Unused)
306 (Unused) (未使用): 306状态码在此规范的前一个版本中定义,不再使用,并且保留该代码。
307 Temporary Redirect
307 Temporary Redirect (临时重定向): 请求的资源临时从不同的 URI 响应请求。与 302 类似,但要求客户端在后续请求中必须使用原始的 HTTP 方法(如 POST)来请求新 URI。这是 302 在 HTTP/1.1 中更严格的对应物。
308 Permanent Redirect
308 Permanent Redirect (永久重定向): 请求的资源已永久移动到新位置。与 301 类似,但要求客户端在后续请求中必须使用原始的 HTTP 方法来请求新 URI。这是 301 在 HTTP/1.1 中更严格的对应物。
309-399 Unassigned
Unassigned(未赋值的)
4xx Client Error (客户端错误状态码)
400 Bad Request
400 Bad Request (错误请求): 服务器认为客户端发送的请求存在语法错误,无法理解或处理。这是一个通用的客户端错误状态码。
401 Unauthorized
401 Unauthorized (未授权): 当前请求需要用户验证。客户端必须提供身份凭证(如用户名密码,或有效的 Token)。服务器可以返回 WWW-Authenticate 头来指明所需的验证方式。
402 Payment Required
402 Payment Required (需要付款): (新增) 这个状态码是为未来的数字现金或微支付系统预留的。目前它并没有被广泛使用或标准化的具体含义。服务器可以用它来表示处理请求需要付费,但具体的付费机制需要由应用程序自行定义。
403 Forbidden
403 Forbidden (禁止): 服务器理解请求客户端的请求,但是拒绝执行此请求。与 401 不同,身份验证并不能提供任何帮助。这通常是因为权限不足。
404 Not Found
404 Not Found (未找到): 请求的资源(网页等)不存在。这是最常见的 4xx 错误之一。
405 Method Not Allowed
405 Method Not Allowed (方法不允许): 请求行中指定的请求方法不能被用于请求相应的资源。例如,对一个只接受 GET 的接口发送了 POST 请求。服务器必须返回 Allow 头,指明允许的方法。
406 Not Acceptable
406 Not Acceptable (无法接受): 服务器无法根据客户端请求的 Accept 系列头(如 Accept, Accept-Charset, Accept-Encoding, Accept-Language)生成相应的内容。
407 Proxy Authentication Required
407 Proxy Authentication Required (需要代理授权): (补充) 与 401 类似,但表示客户端需要先通过代理服务器的认证。代理服务器会发送 Proxy-Authenticate 头。
408 Request Timeout
408 Request Timeout (请求超时): 服务器等候请求时发生超时。客户端没有在服务器预备等待的时间内完成一个请求的发送。
409 Conflict
409 Conflict (冲突): 由于和被请求的资源的当前状态之间存在冲突,请求无法完成。例如,试图上传一个已存在的文件名,但服务器不允许覆盖。
410 Gone
410 Gone (已失效): 被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。这和 404 Not Found 不同,410 表示资源是永久性消失。
411 Length Required
411 Length Required (需要内容长度): 服务器拒绝在没有定义 Content-Length 头的情况下接受请求。在 HTTP/1.1 中,客户端发送包含请求体的请求时应该带上 Content-Length 头。
412 Precondition Failed
412 Precondition Failed (前提条件失败): (补充) 客户端发送的请求包含一些前提条件(如 If-Match, If-Unmodified-Since 等),而服务器检验这些条件时发现它们不成立。
413 Content Too Large
413 Payload Too Large (请求实体过大): 服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器愿意或能够处理的范围。
414 URI Too Long
414 URI Too Long (请求的 URI 过长): 请求的 URI 长度超过了服务器能够解释的长度。
415 Unsupported Media Type
415 Unsupported Media Type (不支持的媒体类型): 对于当前请求的方法和所请求的资源,请求中提交的实体并不是服务器中所支持的格式。通常是因为 Content-Type 头指定的类型不被支持。
416 Range Not Satisfiable
416 Range Not Satisfiable (请求范围不符合要求): (补充,替代旧称 416 Requested Range Not Satisfiable) 客户端请求的范围无效或无法满足(例如,请求的字节范围超出了文件大小)。
417 Expectation Failed
417 Expectation Failed (期望失败): (补充) 服务器无法满足客户端在 Expect 请求头中指定的期望(例如 Expect: 100-continue)。
418 (Unused)
418 (Unused): [RFC2324]是4月1日发布的RFC,它讽刺了HTTP被滥用的各种方式;其中一个滥用是特定于应用程序的418状态码的定义,它经常被当作一个笑话来部署,以至于代码无法用于任何未来的使用。
因此,在IANA HTTP状态码注册表中保留418状态码。这表示当前不能将状态码分配给其他应用程序。如果将来的情况需要使用它(例如,4NN状态码耗尽),它可以被重新分配给另一个用途。
419-420 Unassigned
Unassigned(未赋值的)
421 Misdirected Request
421 Misdirected Request (请求发送错误): (补充) 请求被发送到了无法产生响应的服务器(例如,因为连接复用导致请求被错误地路由到一个不负责该域名的服务器)
422 Unprocessable Content
422 Unprocessable Entity (无法处理的实体): 请求格式良好,但由于语义错误,无法被服务器处理。例如,WebDAV 中用于 XML 请求主体的语义错误。
423 Locked
423 Locked (已锁定) (WebDAV): (补充) 请求的资源被锁定。
424 Failed Dependency
424 Failed Dependency (WebDAV): (补充) 由于之前的一个请求失败,导致当前请求无法执行。
425 Too Early
425 Too Early (实验性): (补充) 服务器不愿意处理风险过高的请求(例如,过早地重放 TLS early data)。
426 Upgrade Required
426 Upgrade Required (需要升级): (补充) 客户端应切换到在 Upgrade 头中指定的更高版本协议。
427 Unassigned
Unassigned(未赋值的)
428 Precondition Required
428 Precondition Required (要求前提条件): (补充) 服务器要求客户端在发送请求时必须包含某些前提条件(如 If-Match)以防止“丢失更新”问题。
429 Too Many Requests
429 Too Many Requests (请求过多): 用户在给定的时间内发送了太多的请求(“限流”)。服务器可以返回 Retry-After 头来指明客户端多久后可以再次尝试。
430 Unassigned
Unassigned(未赋值的)
431 Request Header Fields Too Large
431 Request Header Fields Too Large (请求头字段过大): 请求中的一个或多个头字段太大,服务器不愿意或无法处理。
432-450 Unassigned
Unassigned(未赋值的)
451 Unavailable For Legal Reasons
451 Unavailable For Legal Reasons (因法律原因不可用): (补充) 服务器因为法律原因(如政府审查、版权侵犯)而拒绝访问该资源。
452-499 Unassigned
Unassigned(未赋值的)
5xx Server Error (服务器错误状态码)
500 Internal Server Error
500 Internal Server Error (内部服务器错误): 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。这是一个通用的服务器错误状态码。
501 Not Implemented
501 Not Implemented (尚未实施): 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求时,应当返回此状态码。
502 Bad Gateway
502 Bad Gateway (错误网关): 作为网关或代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503 Service Unavailable
503 Service Unavailable (服务不可用): 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是暂时的,并且通常会提供 Retry-After 头指明客户端何时可以再次尝试。
504 Gateway Timeout
504 Gateway Timeout (网关超时): 作为网关或代理工作的服务器尝试执行请求时,未能及时从上游服务器(如 Tomcat, IIS)收到响应。
505 HTTP Version Not Supported
505 HTTP Version Not Supported (HTTP 版本不受支持): 服务器不支持,或拒绝支持在请求消息中使用的 HTTP 版本。
506 Variant Also Negotiates
506 Variant Also Negotiates (variant 也进行协商): (新增) 由 Transparent Content Negotiation 协议 (RFC 2295) 指定。表示服务器存在内部配置错误:用于透明内容协商的协商结果本身也是协商过程的一部分。
507 Insufficient Storage
507 Insufficient Storage (储存空间不足) (WebDAV): (新增) 服务器无法存储完成请求所必需的内容。这通常发生在 WebDAV 的 PROPPATCH 等操作中。
508 Loop Detected
508 Loop Detected (检测到循环) (WebDAV): (新增) 服务器在处理请求时检测到无限循环(例如,在 WebDAV PROPFIND 操作中)。
509 Unassigned
509 Unassigned (未分配): (新增) 此状态码未被 IANA 分配使用。有时一些非标准实现可能会使用它,但这不符合规范。
510 Not Extended (OBSOLETED)
510 Not Extended (未扩展) (已作废 OBSOLETED): (新增) 表示服务器需要更多的扩展才能完成请求。这个状态码在后来的 RFC (如 RFC 7231) 中已被标记为 作废 (OBSOLETED)。
511 Network Authentication Required
511 Network Authentication Required (需要网络认证): (新增) 表示客户端需要进行身份验证才能获得网络访问权限(例如,在连接到需要登录的 Wi-Fi 热点后首次访问外部网络时)。它旨在将网络身份验证与应用程序身份验证区分开来。
512-599 Unassigned
Unassigned(未赋值的)