原文链接:http://blog.geekidentity.com/network/http_status_code/
1xx(Informational) 状态码类别表示在完成所请求的动作并发送最终响应之前的通信连接状态或请求进度的临时响应。1xx 响应由状态行之后的第一个空行(空行表示header 部分的结尾)终止。 由于HTTP/1.0 没有定义任何1xx状态码,因此服务器不得向HTTP/1.0客户端发送1xx响应。
即使客户端没有预期到,客户端也必须能够解析在收到最终响应之前所收到的一个或多个1xx响应,即客户端必须能处理所有1xx响应。用户代理可以忽略意外的1xx响应。
代理必须转发1xx响应,除非是代理本身请求生成1xx响应。 例如,如果代理在转发请求时添加“Expect:100-continue”字段,则不需要转发相应的100(Continue)响应。
表示服务器已经接收到了请求头,并且客户端应该继续发送请求体。
表示请求方已经要求服务器切换协议,并且服务器已经接受并会进行处理。
2xx(成功)类状态码表示客户端的请求已成功接收,设置并被接受。
HTTP 请求成功的标准应答。实际的应答内容由请求使用的方法来决定。
请求已经被接受,并且请求所对应的资源已经被创建。
请求已被接受,尚未完成处理,也有可能会被拒绝。
在成功处理请求后服务器并没有返回任何实体内容。
依照子请求的数量的不同,消息体包含不同的响应代码。
3xx(重定向)类状态码表示用户代理需要采取进一步的操作才能完成请求。
表示被请求的资源可以提供多种选项让客户端进行选择
该请求应当被定向到给定的URI(统一资源定位符)
这是一个工业实践和标准相互矛盾的例子。一些Web应用和框架会使用302状态码
对应当前请求的响应可以使用GET方法从另一个URI获取
表示资源自上次请求以来没有被改变。
(译注:被请求的资源必须通过指定的代理才能被访问) 大多数HTTP客户端不会正确响应这个状态码,主要是出于安全性的原因
在这种情况下,请求会从另外的URI响应但是未来的请求仍会使用原始的URI
4xx(客户端错误)类状态码表示客户端似乎有错误。 除了响应HEAD请求之外,服务器应该发送一个表示,其中包含有关错误情况的说明,以及它是否是临时或永久条件。 这些状态码适用于任何请求方式。 用户代理应该向用户显示任何包含的表示。
因为错误的语法,请求不能完成
当需要授权,但授权失败或还没有授权时返回的状态码
该状态码是为了将来可能的需求而预留的。这个代码通常不使用,但是其最初的意图是可以被某种电子货币所使用。
请求有效,但是服务器拒绝响应它。
请求的资源不能找到,但是将来也许可用。
请求某资源时使用的请求方法不能被该资源所支持。
被请求资源能够产生的内容不满足请求头中指定的类型。
服务器等待请求超时
因为请求中存在冲突导致请求无法被处理
被请求的资源已不可用,同时后续也不再可用。
请求所对应的资源需要指明长度,但请求中并没有包含长度。
其请求数据实体过大,超过服务器处理能力。
URI过长,服务器不能处理
客户端请求部分文件,但是服务器并不能提供这个范围值。
服务器不能满足请求头重指定的要求。
这是个愚人节玩笑,其含义是:当客户端给一个茶壶发送泡咖啡的请求时,茶壶就返回一个418错误状态码,表示“我是一个茶壶”。IETF在1998年愚人节时发布的一个笑话RFC。参考RFC 2324 - Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)超文本咖啡壶控制协议。在实际HTTP服务器中不会实现该状态码。
请求格式正确但是因为存在语意错误无法响应。
当前资源被上锁
因为之前的请求失败而导致了本次请求失败
在WebDav Advanced Collections 草案中定义
客户端应该切换到不同的协议
用户在指定时间内发送的请求过多。
因为请求中的单个域过大、或者全部域全加起来过大。
在Nginx记录中使用,表示服务器没有向客户端返回信息并且已经关闭了连接
微软所扩展的一个状态码
5xx(服务器错误)状态码类表示服务器知道它已经错误或无法执行请求的方法。 除了响应HEAD请求之外,服务器应该发送一个表示,其中包含有关错误情况的说明,以及它是临时还是永久条件。 用户代理应显示任何包含的表示给用户。 这些响应代码适用于任何请求方法。
当没有其他更加确切的信息可以给出时,给出的一个一般性错误信息。
作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应
服务器当前不可用。
请求的透明内容协商导致循环引用
服务器无法存储完成请求所必须的内容。
服务器在处理请求时发现一个无限循环
尽管很多服务器使用该协议,但其并没有在任何RFC中说明
这个状态码没有在任何RFC中说明,但微软公司在用。