HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码,状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果;
状态码由三位数字+原因短语组成;数字中的第一位表示响应类别,后两位无分类;
1xx: 信息类状态码,
这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送 1xx 响应。
100 客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分, 或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。
101 服务器已经理解了客户端的请求,并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求。在发送完这个响应最后的空行后,
服务器将会切换到在Upgrade 消息头中定义的那些协议。
102 代表处理将被继续执行。
2xx: 成功状态码
这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。
200 请求已成功,请求所希望的响应头或数据体将随此响应返回。
201 请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随Location 头信息返回。
假如需要的资源无法及时建立的话,应当返回 '202 Accepted'。
202 服务器已接受请求,但尚未处理。正如它可能被拒绝一样,最终该请求可能会也可能不会被执行。在异步操作的场合下,
没有比发送这个状态码更方便的做法了。
203 服务器已成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确定集合,而是来自本地或者第三方的拷贝。
当前的信息可能是原始版本的子集或者超集。例如,包含资源的元数据可能导致原始服务器知道元信息的超级。使用此状态码不是必须的,而且只有在响应不使用此状态码便会返回200 OK的情况下才是合适的。
204 服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息。响应可能通过实体头部的形式,
返回新的或更新后的元信息。如果存在这些头部信息,则应当与所请求的变量相呼应。
205 服务器成功处理了请求,且没有返回任何内容。但是与204响应不同,返回此状态码的响应要求请求者重置文档视图。
该响应主要是被用于接受用户输入后,立即重置表单,以便用户能够轻松地开始另一次输入。
206 服务器已经成功处理了部分 GET 请求。
207 代表之后的消息体将是一个XML消息,并且可能依照之前子请求数量的不同,包含一系列独立的响应代码。
3xx: 重定向状态码
代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)
在本次响应的 Location 域中指明。
300 被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的商议信息。
301 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一。
302 请求的资源现在临时从不同的 URI 响应请求。
303 对应当前请求的响应可以在另一个 URI 上被找到,而且客户端应当采用 GET 的方式访问那个资源。
304 如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,
则服务器应当返回这个状态码。304响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。
305 被请求的资源必须通过指定的代理才能被访问
307 请求的资源现在临时从不同的URI 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。
4xx: 客户端错误状态码
这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。
400 语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求;请求参数有误。
401 当前请求需要用户验证。
402 该状态码是为了将来可能的需求而预留的。
403 服务器已经理解请求,但是拒绝执行它。
404 服务器已经理解请求,但是拒绝执行它。
405 请求行中指定的请求方法不能被用于请求相应的资源。
406 请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体。
407 与401响应类似,只不过客户端必须在代理服务器上进行身份验证。
408 请求超时。客户端没有在服务器预备等待的时间内完成一个请求的发送。
409 由于和被请求的资源的当前状态之间存在冲突,请求无法完成。
410 被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。
411 服务器拒绝在没有定义 Content-Length 头的情况下接受请求。
412 服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。
413 服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器愿意或者能够处理的范围。
414 请求的URI 长度超过了服务器能够解释的长度,因此服务器拒绝对该请求提供服务。
415 对于当前请求的方法和所请求的资源,请求中提交的实体并不是服务器中所支持的格式,因此请求被拒绝
416 如果请求中包含了 Range 请求头,并且 Range 中指定的任何数据范围都与当前资源的可用范围不重合,
同时请求中又没有定义 If-Range 请求头,那么服务器就应当返回416状态码。
417 在请求头 Expect 中指定的预期内容无法被服务器满足,或者这个服务器是一个代理服务器,它有明显的证据证明在当前路由的下一个节点上,
Expect 的内容无法被满足。
418 本操作码是在1998年作为IETF的传统愚人节笑话, 在RFC 2324 超文本咖啡壶控制协议中定义的,并不需要在真实的HTTP服务器中定义。
当一个控制茶壶的HTCPCP收到BREW或POST指令要求其煮咖啡时应当回传此错误。
421 从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最大范围。
422 请求格式正确,但是由于含有语义错误,无法响应。
423 当前资源被锁定。
424 由于之前的某个请求发生的错误,导致当前请求失败,
449 由微软扩展,代表请求应当在执行完适当的操作后进行重试。
451 由IETF核准,代表基于法律因素,网站内容已遭封锁。
5xx: 服务器错误状态码
这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求
的处理。除非这是一个HEAD 请求,否则服务器应当包含一个解释当前错误状态以及这个状况是临时的还是永久的解释信息实体。浏览器应当向
用户展示任何在当前响应中被包含的实体。
500 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。
501 服务器不支持当前请求所需要的某个功能。
502 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503 由于临时的服务器维护或者过载,服务器当前无法处理请求
504 作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器
(例如DNS)收到响应。
505 服务器不支持,或者拒绝支持在请求中使用的 HTTP 版本。
506 代表服务器存在内部配置错误:被请求的协商变元资源被配置为在透明内容协商中使用自己,因此在一个协商处理中不是一个合适的重点。
507 服务器无法存储完成请求所必须的内容。这个状况被认为是临时的。
509 服务器达到带宽限制。
510 获取资源所需要的策略并没有没满足。