HTTP状态码是一种标准化的机制,用于服务器向客户端传达请求处理的结果。这些状态码是在HTTP协议中定义的,由三位数字代码组成。每个状态码都传达了不同类型的信息,例如请求成功、重定向、客户端错误或服务器错误等。客户端通过解析服务器响应中的状态码来了解请求的处理情况,并相应地采取适当的行动。HTTP状态码的使用使得客户端和服务器之间的通信更加清晰和可靠。
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。
响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599):
- 1xx(信息性状态码):表示接收的请求正在处理。
- 2xx(成功状态码):表示请求正常处理完毕。
- 3xx(重定向状态码):需要后续操作才能完成这一请求。
- 4xx(客户端错误状态码):表示请求包含语法错误或无法完成。
- 5xx(服务器错误状态码):服务器在处理请求的过程中发生了错误。
常见的HTTP状态码的详细解析:
200 OK:
- 含义:请求成功。这个状态码表示服务器已经成功处理了客户端的请求,且返回了请求所需的资源。
- 示例:当你在浏览器中访问一个网页时,如果服务器成功返回了该网页的内容,就会返回这个状态码。
304 Not Modified:
- 含义:未修改。服务器在收到客户端的请求后发现资源未被修改,因此可以直接使用客户端缓存的版本,从而减少网络流量和加载时间。
- 示例:当你再次访问一个已经访问过的网页时,如果该网页的内容未发生变化,服务器会返回这个状态码,告诉客户端可以使用缓存的版本。
400 Bad Request:
- 含义:请求错误。服务器无法理解客户端发送的请求,可能是因为请求的语法错误、格式不正确或缺少必要的参数。
- 示例:当客户端发送了一个无效的请求,比如请求参数缺失或格式不正确时,服务器会返回这个状态码。
404 Not Found:
- 含义:未找到。服务器无法根据客户端的请求找到所请求的资源,通常是因为请求的URL不存在或输入错误。
- 示例:当你尝试访问一个已经删除或者不存在的网页时,服务器会返回这个状态码。
500 Internal Server Error:
- 含义:服务器内部错误。这个状态码表示服务器在处理请求时发生了不可预料的错误,无法完成请求。
- 示例:当服务器端程序出现了异常、配置错误或者资源不足时,会返回这个状态码,表示服务器端出现了问题。
状态码 | 类型 | 说明 |
100 | 继续 | 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 |
101 | 切换协议 | 请求者已要求服务器切换协议,服务器已确认并准备切换。 |
102 | 处理中 | 由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行 |
状态码 | 类型 | 说明 |
200 | 成功 | 服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。 |
201 | 已创建 | 请求成功并且服务器创建了新的资源。 |
202 | 已接受 | 服务器已接受请求,但尚未处理。 |
203 | 非授权信息 | 服务器已成功处理了请求,但返回的信息可能来自另一来源。 |
204 | 无内容 | 服务器成功处理了请求,但没有返回任何内容。 |
205 | 重置内容 | 服务器成功处理了请求,但没有返回任何内容。 |
206 | 部分内容 | 服务器成功处理了部分 GET 请求。 |
208 | 已经报告 | 一个DAV的绑定成员被前一个请求枚举,并且没有被再一次包括。 |
226 | IM Used | 服务器已经满足了请求所要的资源,并且响应是一个或多个实例操作应用于当前实例的结果。 |
状态码 | 类型 | 说明 |
300 | 多种选择 | 针对请求,服务器可执行多种操作。服务器可根据请求者选择一项操作,或提供操作列表供请求者选择。 |
301 | 永久移动 | 请求的网页已永久移动到新位置。服务器返回此响应时,会自动将请求者转到新位置。 |
302 | 临时移动 | 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置进行以后的请求。 |
303 | 查看其他位置 | 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。 |
304 | 未修改 | 自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。 |
305 | 使用代理 | 请求者只能使用代理访问请求的网页。如果服务器返回此响应,表示请求者应使用代理。 |
307 | 临时重定向 | 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置进行以后的请求。 |
308 | 永久转移 | 请求和以后的请求都应该被另一个URI地址重新发送。307、308和302、301有相同的表现,但不允许HTTP方法改变 |
状态码 | 类型 | 说明 |
400 | 错误请求 | 服务器不理解请求的语法。 |
401 | 未授权 | 请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。 |
402 | 预留 | 该状态码是为了将来可能的需求而预留的。 |
403 | 禁止 | 服务器拒绝请求。 |
404 | 未找到 | 服务器找不到请求的网页。 |
405 | 方法禁用 | 禁用请求中指定的方法。 |
406 | 不接受 | 无法使用请求的内容特性响应请求的网页。 |
407 | 需要代理授权 | 此状态代码与401(未授权)类似,但指定请求者应当授权使用代理。 |
408 | 请求超时 | 服务器等候请求时发生超时。 |
409 | 冲突 | 服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。 |
410 | 已删除 | 如果请求的资源已永久删除,服务器就会返回此响应。 |
411 | 需要有效长度 | 服务器不接受不含有效内容长度标头字段的请求。 |
412 | 未满足前提条件 | 服务器未满足请求者在请求中设置的其中一个前提条件。 |
413 | 请求实体过大 | 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。 |
414 | 请求的 URI 过长 | 请求的 URI(通常为网址)过长,服务器无法处理。 |
415 | 不支持的媒体类型 | 请求的格式不受请求页面的支持。 |
416 | 请求范围不符合要求 | 如果页面无法提供请求的范围,则服务器会返回此状态代码。 |
417 | 未满足期望值 | 服务器未满足"期望"请求标头字段的要求。 |
418 | 我是一个茶壶 | 这个代码是在1998年作为传统的IETF April Fools‘ jokes被定义的在RFC2324,超文本咖啡罐控制协议,但是并没有被实际的HTTP服务器实现。RFC指定了这个代码应该是由茶罐返回给速溶咖啡。 |
419 | 认证超时 | 并不是HTTP标注的一部分,419认证超时表示以前的有效证明已经失效了。同时也被用于401未认证的替代选择为了从其它被拒绝访问的已认证客户端中指定服务器的资源。 |
420 | 方法失效 | 不是HTTP的标准,但是被Spring定义在HTTP状态类中当方法失时使用。这个状态码已经不推荐在Spring中使用。 |
420 | 提高你的耐心 | 也不是HTTP标准的一部分,但是被版本1的Twitter搜索和趋势APi返回当客户端的速率被限制的时候。其它的服务提供商可能会使用429太多的请求响应码来代替。 |
421 | 连接数超限 | 从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最大范围。通常,这里的IP地址指的是从服务器上看到的客户端地址(比如用户的网关或者代理服务器地址)。在这种情况下,连接数的计算可能涉及到不止一个终端用户。 |
422 | 请求语义错误 | 请求格式正确,但是由于含有语义错误,无法响应。(RFC 4918 WebDAV) |
423 | 资源被锁定 | 当前资源被锁定。(RFC 4918 WebDAV) |
424 | 请求失败 | 由于之前的某个请求发生的错误,导致当前请求失败,例如 PROPPATCH。(RFC 4918 WebDAV) |
425 | 未出现在标准中 | 在WebDav Advanced Collections 草案中定义,但是未出现在《WebDAV 顺序集协议》(RFC 3658)中。 |
426 | 切换到TLS/1.0 | 客户端应当切换到TLS/1.0。(RFC 2817) |
428 | 需要前置条件 | 原始服务器需要有条件的请求。当客户端GET一个资源的状态的时候,同时又PUT回给服务器,与此同时第三方修改状态到服务器上的时候,为了避免丢失更新的问题发生将会导致冲突。 |
429 | 过多请求 | 用户已经发送了太多的请求在指定的时间里。用于限制速率。 |
431 | 请求头部字段太大 | 服务器由于一个单独的请求头部字段或者是全部的字段太大而不愿意处理请求。 |
440 | 登陆超时 | 一个微软的扩展,意味着你的会话已经超时。 |
444 | 无响应 | 被使用在Nginx的日志中表明服务器没有返回信息给客户端并且关闭了连接。 |
449 | 重试 | 一个微软的扩展 |
状态码 | 类型 | 说明 |
450 | 被Windows家长控制阻塞(微软) | 当Windows家长控制打开并且阻塞指定网页的访问时发生。 |
451 | 由于法律原因而无效(因特网草稿) | 当资源的访问由于法律原因被禁止时使用。例如检查制度或政府强制要求禁止访问。 |
494 | 请求头太大(Nginx) | 类似于431,但是早在Nginx版本0.9.4中引入(2011年1月21日)。 |
495 | 证书错误(Nginx) | 当使用SSL客户端证书时出错,用于在日志错误中与4XX和错误页面的重定向进行区分。 |
496 | 没有证书(Nginx) | 当客户端未提供证书时,用于在日志中与4XX和错误页面的重定向进行区分。 |
497 | HTTP到HTTPS(Nginx) | 当原始HTTP请求发送到HTTPS端口时使用,用于在日志中与4XX和错误页面的重定向进行区分。 |
498 | 令牌超时或失效(Esri) | 由ArcGIS for Server返回,表示令牌超时或失效。 |
499 | 客户端关闭请求(Nginx) | 当服务器仍在处理请求但连接已被客户端关闭时使用,在Nginx日志中记录,用于表示服务器无法返回状态码。 |
499 | 需要令牌(Esri) | 由ArcGIS for Server返回,表示需要令牌(如果未提交)。 |
状态码 | 类型 | 说明 |
500 | 服务器内部错误 | 服务器遇到错误,无法完成请求。 |
501 | 尚未实施 | 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。 |
502 | 错误网关 | 服务器作为网关或代理,从上游服务器收到无效响应。 |
503 | 服务不可用 | 服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。 |
504 | 网关超时 | 服务器作为网关或代理,但是没有及时从上游服务器收到请求。 |
505 | HTTP 版本不受支持 | 服务器不支持请求中所用的 HTTP 协议版本。 |
506 | 内部配置错误 | 服务器存在内部配置错误,无法完成请求。 |
507 | 服务器无法存储内容 | 服务器无法存储完成请求所必须的内容。这个状况被认为是临时的。 |
508 | 发现环路 | 服务器发现了一个无限的循环档处理请求的时候。 |
509 | 带宽限制 | 服务器达到带宽限制。这不是一个官方的状态码,但是仍被广泛使用。 |
510 | 策略未满足 | 获取资源所需要的策略并没有满足。 |
511 | 需要网络授权 | 客户端需要授权去访问网络。一般用于代理交互中进行网络访问控制。 |
520 | 未知错误 | 服务器返回一个未知的或无法解释的错误。 |
598 | 网络读取超时异常 | 代理服务器后面的网络读取超时。 |
599 | 网络连接超时异常 | 代理服务器后面的网络连接超时。 |