HTTP状态码
简单记录一下常用的http状态码表示的含义
0x00- - 概念
HTTP状态码(英语:HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的3位数字代码。这是表示使用HTTP协议(HyperText Transfer Protocol,超文本传输协议)客服端的请求做出反应的三位数字码。
HTTP状态根据开头的第一个数字分为5类。后面两个数字没有分类的作用。
0x01- - 1xx 信息类状态码
这类状态码表示服务器已经收到了请求,需要请求者继续执行操作。
代码号 | 名称 | 含义 |
---|---|---|
100 | Continue | 继续。客户端应继续其请求 |
101 | Switch Protrol | 切换协议,根据客户端的请求切换协议,只能由下至上的切换 |
102 | Processing | 由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行 |
0x02- - 2xx 成功类状态码
这类状态码表示服务器已经接受了请求并成功地处理了请求
代码号 | 名称 | 含义 |
---|---|---|
200 | OK | 请求成功。一般用于GET与POST请求 |
201 | Created | 已创建。成功请求并创建了新的资源 |
202 | Accepted | 已接受。已经接受请求,但未处理完成,如果201所处理的请求无法及时建立,则返回该状态码 |
203 | Non-Authoritative Information | 请非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本 |
204 | No Content | 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档 |
205 | Reset Content | 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域 |
206 | Partial Content | 部分内容。服务器成功处理了部分GET请求,类似迅雷等下载工具的下载大文件方式 |
207 | Multi-Status | 由WebDAV(RFC 2518)扩展的状态码,代表之后的消息体将是一个XML消息,并且可能依照之前子请求数量的不同,包含一系列独立的响应代码。 |
206请求头部必须包含Range头信息,并有可能含有IF-Range作为条件请求。
响应必须包含如下的头部域:
Content-Range 用以指示本次响应中返回的内容的范围;如果是 Content-Type 为 multipart/byteranges 的多段下载,则每一 multipart 段中都应包含 Content-Range 域用以指示本段的内容范围。假如响应中包含 Content-Length,那么它的数值必须匹配它返回的内容范围的真实字节数。
Date
ETag 和/或 Content-Location,假如同样的请求本应该返回200响应。
Expires, Cache-Control,和/或 Vary,假如其值可能与之前相同变量的其他响应对应的值不同的话。
假如本响应请求使用了 If-Range 强缓存验证,那么本次响应不应该包含其他实体头;假如本响应的请求使用了 If-Range 弱缓存验证,那么本次响应禁止包含其他实体头;这避免了缓存的实体内容和更新了的实体头信息之间的不一致。否则,本响应就应当包含所有本应该返回200响应中应当返回的所有实体头部域。
假如 ETag 或 Last-Modified 头部不能精确匹配的话,则客户端缓存应禁止将206响应返回的内容与之前任何缓存过的内容组合在一起。
任何不支持 Range 以及 Content-Range 头的缓存都禁止缓存206响应返回的内容。
0x03- - 3xx 重定向类状态码
这类状态码表示服务器需要进一步操作来完成请求。
用户浏览器才可以在没有用户介入的情况下自动提交所需要的后续请求。客户端应当自动监测无限循环重定向(例如:A->A,或者A->B->C->A),因为这会导致服务器和客户端大量不必要的资源消耗。按照 HTTP/1.0 版规范的建议,浏览器不应自动访问超过5次的重定向。
代码号 | 名称 | 含义 |
---|---|---|
300 | Multiple Choices | 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择 |
301 | Moved Permanently | 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替。如果这不是一个 GET 或者 HEAD 请求,因此浏览器禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化。 |
302 | Found | 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI |
303 | See Other | 请非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本 |
304 | Not Modified | 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源 |
305 | Use Proxy | 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域 |
306 | Unused | 已经被废弃的HTTP状态码 |
307 | Temporary Redirect | 临时重定向。与302类似。使用GET请求重定向 |
0x04- - 4xx 外部错误类状态码
这类状态码通常指客户端发送的发生了错误,妨碍了服务器的处理、请求包含语法错误或无法完成请求。
0x05- - 5xx 内部错误类状态码
这类状态码通常指服务器在处理请求的过程出现了错误或者有异常发生。也可能是服务器意识到无法处理这个请求。
5xx的状态码适用于任何响应方法。
代码号 | 名称 | 含义 |
---|---|---|
500 | Internal Server Error | 服务器内部错误,无法完成请求,一般是服务器代码出现问题 |
501 | Not Implemented | 服务器不支持请求的功能,无法完成请求 |
502 | Bad Gateway | 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应 |
503 | Service Unavailable | 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中 |
504 | Gateway Time-out | 充当网关或代理的服务器,未及时从远端服务器获取请求 |
505 | HTTP Version not supported | 服务器不支持请求的HTTP协议的版本,无法完成处理 |
506 | Variant Also Negotiates | 由《透明内容协商协议》(RFC 2295)扩展,代表服务器存在内部配置错误 |
507 | Insufficient Storage | 服务器无法存储完成请求所必须的内容。这个状况被认为是临时的。WebDAV (RFC 4918) |
509 | Bandwidth Limit Exceeded | 服务器达到带宽限制。这不是一个官方的状态码,但是仍被广泛使用。 |
510 | Not Extended | 获取资源所需要的策略并没有没满足。(RFC 2774) |
0x06- - 其他状态码
208 已经报告
一个DAV的绑定成员被前一个请求枚举,并且没有被再一次包括。
226 IM Used
服务器已经满足了请求所要的资源,并且响应是一个或者多个实例操作应用于当前实例的结果。
308 永久转移
这个请求和以后的请求都应该被另一个URI地址重新发送。307、308和302、301有相同的表现,但是不允许HTTP方法改变。例如,请求表单到一个永久转移的资源将会继续顺利地执行。
418 我是一个茶壶
这个代码是在1998年作为传统的IETF April Fools‘ jokes被定义的在RFC2324,超文本咖啡罐控制协议,但是并没有被实际的HTTP服务器实现。RFC指定了这个代码应该是由茶罐返回给速溶咖啡。
419 认证超时
并不是HTTP标注的一部分,419认证超时表示以前的有效证明已经失效了。同时也被用于401未认证的替代选择为了从其它被拒绝访问的已认证客户端中指定服务器的资源。
420 方法失效
不是HTTP的标准,但是被Spring定义在HTTP状态类中当方法失时使用。这个状态码已经不推荐在Spring中使用。
420 提高你的耐心
也不是HTTP标准的一部分,但是被版本1的Twitter搜索和趋势APi返回当客户端的速率被限制的时候。其它的服务提供商可能会使用429太多的请求响应码来代替。
428 需要前置条件
原始服务器需要有条件的请求。当客户端GET一个资源的状态的时候,同时又PUT回给服务器,与此同时第三方修改状态到服务器上的时候,为了避免丢失更新的问题发生将会导致冲突。
429 过多请求
用户已经发送了太多的请求在指定的时间里。用于限制速率。
431 请求头部字段太大
服务器由于一个单独的请求头部字段或者是全部的字段太大而不愿意处理请求。
440 登陆超时(微软)
一个微软的扩展,意味着你的会话已经超时。
444 无响应
被使用在Nginx的日志中表明服务器没有返回信息给客户端并且关闭了连接(在威慑恶意软件的时候比较有用)。
449 重试(微软)
一个微软的扩展。请求应该在执行适当的动作之后被重试。
450 被Windows家长控制阻塞(微软)
一个微软的扩展。这个错误是当Windows家长控制打开并且阻塞指定网页的访问的时候被指定。
451 由于法律原因而无效(因特网草稿)
被定义在因特网草稿“一个新的HTTP状态码用于法律限制的资源”。被用于当资源的访问由于法律原因被禁止的时候。例如检查制度或者是政府强制要求禁止访问。一个例子是1953年dystopian的小说Fahrenheit 451就是一个非法的资源。
451 重定向(微软)
被用在Exchange ActiveSync中如果一个更有效的服务器能够被使用或者是服务器不能访问用户的邮箱。
客户端会假定重新执行HTTP自动发现协议去寻找更适合的服务器。
494 请求头太大(Nginx)
Nginx内置代码和431类似,但是是被更早地引入在版本0.9.4(在2011年1月21日)。
495 证书错误(Nginx)
Nginx内置的代码,当使用SSL客户端证书的时候错误会出现为了在日志错误中区分它和4XX和一个错误页面的重定向。。
496 没有证书(Nginx)
Nginx内置的代码,当客户端不能提供证书在日志中分辨4XX和一个错误页面的重定向。
497 HTTP到HTTPS(Nginx)
Nginx内置的代码,被用于原始的HTTP的请求发送给HTTPS端口去分辨4XX在日志中和一个错误页面的重定向。
498 令牌超时或失效(Esri)
由ArcGIS for Server返回。这个代码意味着令牌的超时或者是失效。
499 客户端关闭请求(Nginx)
被用在Nginx日志去表明一个连接已经被客户端关闭当服务器仍然正在处理它的请求,是的服务器无法返货状态码。
499 需要令牌(Esri)
由ArcGIS for Server返回。意味着需要一个令牌(如果没有令牌被提交)。
508 发现环路
服务器发现了一个无限的循环档处理请求的时候。
511 需要网络授权
客户端需要授权去火的网络的访问权限。一般用于代理交互中被用来进行网络的访问控制。
520 未知错误
这个状态码也没有被指定在任何RFC中,并且只会被一些服务器返回,例如微软的Azure和CloudFlare服务器:”520错误本质上是一个捕获全部的响应当原始服务器返回一些未知的或者一些不能被忍受或者被解释的(协议违反或者空响应)”。
598 网络读取超时异常(未知)
这个状态码也没有在任何RFC中指定,但是被用在微软的HTTP代理中去标注一个网络读取超时在一个客户端之前的代理的后面。
599 网络连接超时异常(未知)
这个状态码也没有在任何RFC中指定,但是被用在微软的HTTP代理中去标注一个网络连接超时在一个客户端之前的代理的后面。