HTTP状态代码列表的介绍

144 阅读7分钟

每个HTTP响应都有一个状态代码,它以明确的数字表示请求的处理情况。

HTTP状态码是HTTP响应中的第一行,它是由服务器发送给客户端的。

如果你想知道服务器为什么要发送一个特定的状态代码,看看它意味着什么,或者如果你正在建立服务器,你正在浏览完美的状态代码返回,这个列表将是有用的。

状态代码通过3位数的数字,加上一个简短的描述来表达。

数字的第一个数字标识了响应组

有5个组。

  • 1xx: 信息性响应 - 表示收到了请求并理解了该请求
  • 2xx:成功响应--表明客户要求的行动被接收、理解和接受
  • 3xx:重定向 - 表示客户端必须采取额外的行动来完成请求
  • 4xx: 客户端错误 - 表示有一个错误,似乎是由客户端造成的
  • 5xx服务器错误--表示服务器上发生了一个错误

在文章的其余部分,我列出了所有有用的状态代码。

(我删除了一些特定技术的代码,比如WebDAV,以及很少使用的代码)

信息性回应

状态代码说明
100 继续服务器已经收到了请求头,客户端应该继续发送请求正文(如果是需要发送正文的请求;例如,POST请求)。在一个请求因为不合适的头信息而被拒绝后,再向服务器发送一个大的请求正文,是低效的。为了让服务器检查请求的头信息,客户端必须在其初始请求中发送Expect: 100-continue作为头信息,并在发送正文之前收到100 Continue状态代码的响应。如果客户端收到一个错误代码,如403(禁止)或405(方法不允许),那么它不应该发送请求的正文。响应417 Expectation Failed表明应该在没有Expect头的情况下重复请求,因为它表明服务器不支持期望(例如HTTP/1.0服务器就属于这种情况)。
101 切换协议客户端要求服务器切换协议,服务器也同意这样做。见RFC 7231#6.2.2

成功响应

状态代码描述
200 OK这是对成功的HTTP请求的标准响应。
201 创建通常是对一个POST请求的响应。请求已经完成,一个新的资源已经被创建。
202 已接受该请求已被接受进行处理。没有说实际的处理,以及处理的结果,这可能发生在一个单独的服务器上,或分批进行。
203 非权威性信息原先的服务器返回了200,而客户端和服务器之间的转换代理改变了有效载荷
204 没有内容服务器成功处理了该请求,但没有返回任何内容。
205 重置内容服务器成功处理了该请求,但没有返回任何内容。类似于204响应,但服务器要求客户端重置文档视图(例如用于清除表单)。
206 部分内容为了响应来自客户端的Range 请求,服务器会发送一个部分内容的响应。见RFC 7233#4.1

重定向

状态代码描述
301 已永久移动这个请求和所有未来的请求都应该被导向给定的URI。只在GET/HEAD请求中使用,其他所有的方法308 Permanent Redirect
302 找到该资源被暂时转移到由Location 头指定的URL。只适用于GET/HEAD请求,其他所有方法均适用于307 Temporary Redirect
303 查看其他在POST或PUT请求后,指向Location 头中的确认信息,可使用新的GET请求访问。
304 未修改当客户端使用请求头If-Modified-SinceIf-None-Match ,这个响应状态代码表示资源没有被修改。
307 临时重定向302 请求类似,只是不允许改变HTTP方法。
308 永久重定向类似于301 请求,只是不允许改变HTTP方法。

客户端错误

状态代码描述
400 错误请求由于在客户端产生的请求错误,服务器无法处理该请求。错误可能包括畸形的请求,尺寸太大无法处理,或其他。
401 未授权当需要认证而客户端没有授权时发送。
403 禁止由于各种原因,该资源不可用。如果原因是认证,最好使用401 Unauthorized 状态代码。
404 未找到无法找到请求的资源。
405 不允许使用的方法该资源通过该HTTP方法不可用,但可能通过其他方法可用。
406 不接受客户端传递了一个Accept 标头,其值与服务器不兼容。
407 需要代理认证在客户端和服务器之间有一个需要认证的代理。
408 请求超时服务器在等待该请求时超时。
409 冲突表示请求无法被处理,因为资源的当前状态有冲突,例如多个同时更新的编辑冲突。
410 消失该资源不再可用,也不会再次可用。比404更强大,例如搜索引擎将其解释为从他们的索引中删除该资源的指示。
411 长度要求客户端需要在请求中添加一个Content-Length头,而且是必需的。
412 前提条件失败如果客户端发送了一个If-Unmodified-SinceIf-None-Match 请求头,而服务器不能满足该条件,则返回。
413 有效载荷过大该请求大于服务器愿意或能够处理的范围。
414 URI太长提供的URI太长,服务器无法处理。
415 不支持的媒体类型请求实体有一个服务器或资源不支持的媒体类型。
416 Range Not Satisfiable客户端使用Range 标头要求获得文件的一部分,但服务器无法提供该部分。
417 期望失败服务器不能满足Expect 请求头的要求。
421 误导的请求该请求被指向一个不能产生响应的服务器(例如,由于连接重用)。
426 需要升级客户端应切换到不同的协议,如TLS/1.0,在Upgrade 头域中指定。
428 需要的前提条件服务器要求该请求包含一个If-Match 头。
429 太多的请求用户在一定时间内发送了太多的请求。用于速率限制。
431 请求头字段过大由于一个或多个标头,或整个标头集过大,请求不能被满足。
451 因法律原因不可用由于法律原因,该资源不可用

服务器错误

状态代码描述
500内部服务器错误一个通用的服务器错误信息,当遇到一个意外的情况,并且没有更具体的信息是合适的时候给出。
501 未执行服务器不承认该请求方法,或者它没有能力完成该请求。
502 坏网关服务器作为一个网关或代理,从上游服务器收到一个无效的响应。
503 服务不可用该服务器目前暂时不可用(因为它过载或因维护而停机)。
504 网关超时该服务器作为一个网关或代理,没有及时收到上游服务器的响应。
505 HTTP版本不支持该服务器不支持请求中指定的HTTP协议版本。