HTTP 状态码整理

文章同步于 Github blog

HTTP 状态码被分红了五大类。咱们所列的 是 HTTP/1.1 规范推荐使用的缘由短语。html

总体范围 已定义范围 分类
100 ~ 199 100 ~ 101 信息提示
200~299 200~206 成功
300 ~ 399 300 ~ 305 重定向
400 ~ 499 400 ~ 415 客户端错误
500 ~ 599 500 ~ 505 服务器错误

100~199——信息性状态码

100 Continue

HTTP 100 Continue 信息型状态响应码表示目前为止一切正常, 客户端应该继续请求, 若是已完成请求则忽略.git

为了让服务器检查请求的首部, 客户端必须在发送请求实体前, 在初始化请求中发送 Expect: 100-continue 首部并接收 100 Continue 响应状态码.github

101 Switching Protocol

HTTP 101 Switching Protocol(协议切换)状态码表示服务器应客户端升级协议的请求(Upgrade请求头)正在进行协议切换。web

服务器会发送一个Upgrade响应头来表示其正在切换过去的协议。该过程在 协议升级机制(Protocol upgrade mechanism) 中详细描述。浏览器

在使用 WebSockets 时会用到协议切换。缓存

HTTP/1.1 101 Switching Protocols
Upgrade: websocket 
Connection: Upgrade

102 Processing (WebDAV)

此代码表示服务器已收到并正在处理该请求,但没有响应可用。服务器

200~299——成功状态码

客户端发起请求时,这些请求一般都是成功的。服务器有一组用来表示成功的状态码,分别对应于不一样类型的请求。websocket

200 OK

请求没问题,实体的主体部分包含了所请求的资源。socket

201 Created

用于建立服务器对象的请求(好比,PUT)。tcp

响应的实体主体部分中应该包含各类引用了已建立的资源的 URL,Location 首部包含的则是最具体的引用。 服务器必须在发送这个状态码以前建立好对象。

202 Accepted

请求已被接受,但服务器还未对其执行任何动做。不能保证服务器会完成这个请求;这只是意味着接受请求时,它看起来是有效的。

服务器应该在实体的主体部分包含对请求状态的描述,或许还应该有对请求完成时间的估计(或者包含一个指针,指向能够获取此信息的位置)。

203 Non-Authoritative Information

实体首部(Entity headers) 包含的信息不是来自于源端服务器,而是来自资源的一份副本。

若是中间节点上有一份资源副本,但没法或者没有对它所发送的与资源有关的元信息(首部)进行验证,就会出现这种状况。

这种响应码并非非用不可的;若是实体首部来自源端服务器,响应 为 200 状态的应用程序就能够将其做为一种可选项使用。

204 No Content

服务器成功处理了请求,但不须要返回任何实体内容,而且但愿返回更新了的元信息。

响应可能经过实体头部的形式,返回新的或更新后的元信息。若是存在这些头部信息,则应当与所请求的变量相呼应。

若是客户端是浏览器的话,那么用户浏览器应保留发送了该请求的页面,而不产生任何文档视图上的变化,即便按照规范新的或更新后的元信息应当被应用到用户浏览器活动视图中的文档。因为204响应被禁止包含任何消息体,所以它始终以消息头后的第一个空行结尾。

205 Reset Content

服务器成功处理了请求,且没有返回任何内容。

可是与204响应不一样,返回此状态码的响应要求请求者重置文档视图。

该响应主要是被用于接受用户输入后,当即重置表单,以便用户可以轻松地开始另外一次输入。与204响应同样,该响应也被禁止包含任何消息体,且以消息头后的第一个空行结束。

206 Partial Content

成功执行了一个部分或 Range(范围)请求。

相似于 FlashGet 或者迅雷这类的 HTTP 下载工具都是使用此类响应实现断点续传或者将一个大文档分解为多个下载段同时下载。

该请求必须包含 Range 头信息来指示客户端但愿获得的内容范围,而且可能包含 If-Range 来做为请求条件。

206 响应中必须包含 Content-Range、Date 以及 ETag 或 Content- Location 首部。

207 Multi-Status (WebDAV)

由WebDAV(RFC 2518)扩展的状态码,表明以后的消息体将是一个XML消息,而且可能依照以前子请求数量的不一样,包含一系列独立的响应代码。

208 Multi-Status (WebDAV)

226 IM Used (HTTP Delta encoding)

300~399——重定向状态码

重定向状态码要么告知客户端使用替代位置来访问他们所感兴趣的资源,要么就提供一个替代的响应而不是资源的内容。

若是资源已被移动,可发送一个重定向状态 码和一个可选的 Location 首部来告知客户端资源已被移走,以及如今能够在哪里找到它。这样,浏览器就能够在不打扰使用者的状况下,透明地转入新的位置了。

300 Multiple Choice

客户端请求一个实际指向多个资源的 URL 时会返回这个状态码,比 如服务器上有某个 HTML 文档的英语和法语版本。返回这个代码时 会带有一个选项列表;这样用户就能够选择他但愿使用的那一项了。 有多个版本可用时,客户端须要沟通解决。服务器能够在 Location 首部包含首选 URL

301 Moved Permanently

在请求的 URL 已被移除时使用。

响应的 Location 首部中应该包含 资源如今所处的 URL。除非额外指定,不然这个响应也是可缓存的。

302 Found

请求的资源如今临时从不一样的 URI 响应请求。

因为这样的重定向是临时的,客户端应当继续向原有地址发送之后的请求。客户端应该使用 Location 首部给出的 URL 来临时定位资源。只有在Cache-Control或Expires中进行了指定的状况下,这个响应才是可缓存的。

303 See Other

对应当前请求的响应能够在另外一个 URI 上被找到,并且客户端应当采用 GET 的方式访问那个资源。这个方法的存在主要是为了容许由脚本激活的POST请求输出重定向到一个新的资源。

304 Not Modified

若是客户端发送了一个带条件的 GET 请求且该请求已被容许,而文档的内容(自上次访问以来或者根据请求的条件)并无改变,则服务器应当返回这个状态码。304响应禁止包含消息体,所以始终以消息头后的第一个空行结尾。

305 Use Proxy

被请求的资源必须经过指定的代理才能被访问。

Location 域中将给出指定的代理所在的 URI 信息,接收者须要重复发送一个单独的请求,经过这个代理才能访问相应资源。只有原始服务器才能创建305响应。

306 unused

在最新版的规范中,306状态码已经再也不被使用。

307 Temporary Redirect

请求的资源如今临时从不一样的URI 响应请求。

因为这样的重定向是临时的,客户端应当继续向原有地址发送之后的请求。只有在Cache-Control或Expires中进行了指定的状况下,这个响应才是可缓存的。

308 Permanent Redirect

请求和全部未来的请求应该使用另外一个URI重复。 307和308重复302和301的行为,但不容许HTTP方法更改。 例如,将表单提交给永久重定向的资源可能会顺利进行。

400~499——客户端错误状态码

400 Bad Request

  1. 语义有误,当前请求没法被服务器理解。除非进行修改,不然客户端不该该重复提交这个请求。
  2. 请求参数有误。

401 Unauthorized

当前请求须要用户验证。

该响应必须包含一个适用于被请求资源的 WWW-Authenticate 信息头用以询问用户信息。客户端能够重复提交一个包含恰当的 Authorization 头信息的请求。

若是当前请求已经包含了 Authorization 证书,那么401响应表明着服务器验证已经拒绝了那些证书。

若是401响应包含了与前一个响应相同的身份验证询问,且浏览器已经至少尝试了一次验证,那么浏览器应当向用户展现响应中包含的实体信息,由于这个实体信息中可能包含了相关诊断信息。

402 Payment Required

此响应码保留以便未来使用,创造此响应码的最初目的是用于数字支付系统,然而如今并未使用。

403 Forbidden

服务器已经理解请求,可是拒绝执行它。

与401响应不一样的是,身份验证并不能提供任何帮助,并且这个请求也不该该被重复提交。若是这不是一个 HEAD 请求,并且服务器但愿可以讲清楚为什么请求不能被执行,那么就应该在实体内描述拒绝的缘由。固然服务器也能够返回一个404响应,假如它不但愿让客户端得到任何信息。

404 Not Found

请求失败,请求所但愿获得的资源未被在服务器上发现。没有信息可以告诉用户这个情况究竟是暂时的仍是永久的。假如服务器知道状况的话,应当使用410状态码来告知旧资源由于某些内部的配置机制问题,已经永久的不可用,并且没有任何能够跳转的地址。404这个状态码被普遍应用于当服务器不想揭示到底为什么请求被拒绝或者没有其余适合的响应可用的状况下。

405 Method Not Allowed

请求行中指定的请求方法不能被用于请求相应的资源。该响应必须返回一个 Allow 头 信息用以表示出当前资源可以接受的请求方法的列表。   

鉴于 PUT,DELETE 方法会对服务器上的资源进行写操做,于是绝大部分的网页服务器都不支持或者在默认配置下不容许上述请求方法,对于此类请求均会返回 405 错误。

406 Not Acceptable

客户端能够指定参数来讲明它们愿意接收什么类型的实体。

服务器没有与客户端可接受的 URL 相匹配的资源时,使用此代码。一般,服务器会包含一些首部,以便客户端弄清楚为何请求没法知足。

407 Proxy Authentication Required

与401响应相似,只不过客户端必须在代理服务器上进行身份验证。代理服务器必须返回一个 Proxy-Authenticate 用以进行身份询问。客户端能够返回一个 Proxy-Authorization 信息头用以验证。

408 Request Timeout

请求超时。

客户端没有在服务器预备等待的时间内完成一个请求的发送。客户端能够随时再次提交这一请求而无需进行任何更改。

409 Conflict

因为和被请求的资源的当前状态之间存在冲突,请求没法完成。

这个代码只容许用在这样的状况下才能被使用:用户被认为可以解决冲突,而且会从新提交新的请求。该响应应当包含足够的信息以便用户发现冲突的源头。

410 Gone

被请求的资源在服务器上已经再也不可用,并且没有任何已知的转发地址。

这样的情况应当被认为是永久性的。若是可能,拥有连接编辑功能的客户端应当在得到用户许可后删除全部指向这个地址的引用。若是服务器不知道或者没法肯定这个情况是不是永久的,那么就应该使用404状态码。除非额外说明,不然这个响应是可缓存的。  

411 Length Required

服务器要求在请求报文中包含 Content-Length 首部时使用。

在添加了代表请求消息体长度的有效 Content-Length 头以后,客户端能够再次提交该请求。

412 Precondition Failed

客户端发起了条件请求,且其中一个条件失败了的时候使用。客户端包含了 Expect 首部 时发起的就是条件请求。

这个状态码容许客户端在获取资源时在请求的元信息(请求头字段数据)中设置先决条件,以此避免该请求方法被应用到其但愿的内容之外的资源上。

413 Payload Too Large

服务器拒绝处理当前请求,由于该请求提交的实体数据大小超过了服务器愿意或者可以处理的范围。

此种状况下,服务器能够关闭链接以避免客户端继续发送此请求。若是这个情况是临时的,服务器应当返回一个 Retry-After 的响应头,以告知客户端能够在多少时间之后从新尝试。

414 URI Too Long

请求的 URI 长度超过了服务器可以解释的长度,所以服务器拒绝对该请求提供服务。

这比较少见,一般的状况包括:本应使用 POST 方法的表单提交变成了 GET 方法,致使查询字符串(Query String)过长。

415 Unsupported Media Type

对于当前请求的方法和所请求的资源,请求中提交的实体并非服务器中所支持的格式,所以请求被拒绝。

416 Requested Range Not Satisfiable

若是请求中包含了 Range 请求头,而且 Range 中指定的任何数据范围都与当前资源的可用范围不重合,同时请求中又没有定义 If-Range 请求头,那么服务器就应当返回 416 状态码。

417 Expectation Failed

请求的 Expect 请求首部包含了一个指望,但服务器没法知足此指望时,使用此状态码。

若是代理或其余中间应用程序有确切证听说明源端服务器会为某请求产生一个失败的指望,就能够发送这个响应状态码。

418 I'm a teapot

htcpcp1.0协议中的418的意义是:当客户端给一个茶壶发送泡咖啡的请求时,茶壶就返回一个418错误状态码,表示“我是一个茶壶”。

421 Misdirected Request

The request was directed at a server that is not able to produce a response. This can be sent by a server that is not configured to produce responses for the combination of scheme and authority that are included in the request URI.

422 Unprocessable Entity (WebDAV)

The request was well-formed but was unable to be followed due to semantic errors.

423 Locked (WebDAV)

The resource that is being accessed is locked.

424 Failed Dependency (WebDAV)

The request failed due to failure of a previous request.

426 Upgrade Required

The server refuses to perform the request using the current protocol but might be willing to do so after the client upgrades to a different protocol. The server sends an Upgrade header in a 426 response to indicate the required protocol(s).

428 Precondition Required

The origin server requires the request to be conditional. Intended to prevent the 'lost update' problem, where a client GETs a resource's state, modifies it, and PUTs it back to the server, when meanwhile a third party has modified the state on the server, leading to a conflict.

429 Too Many Requests

The user has sent too many requests in a given amount of time ("rate limiting").
431 Request Header Fields Too Large
The server is unwilling to process the request because its header fields are too large. The request MAY be resubmitted after reducing the size of the request header fields.

451 Unavailable For Legal Reasons

The user requests an illegal resource, such as a web page censored by a government.

服务端响应

500 Internal Server Error

服务器遇到了不知道如何处理的状况。

501 Not Implemented

客户端发起的请求超出服务器的能力范围(好比,使用了服务器不支持的请求方法)时,使用此状态码

502 Bad Gateway

做为代理或网关使用的服务器从请求响应链的下一条链路上收到了一条伪响应(好比,它没法链接到其父网关)时,使用此状态码。

503 Service Unavailable

用来讲明服务器如今没法为请求提供服务,但未来能够。

若是服务器知道何时资源会变为可用的,能够在响应中包含一个 Retry- After 首部。

504 Gateway Timeout

与状态码 408 相似,只是这里的响应来自一个网关或代理,它们在 等待另外一服务器对其请求进行响应时超时了

505 HTTP Version Not Supported

服务器收到的请求使用了它没法或不肯支持的协议版本时,使用此状态码。有些服务器应用程序会选择不支持协议的早期版本

506 Variant Also Negotiates

The server has an internal configuration error: transparent content negotiation for the request results in a circular reference.

507 Insufficient Storage

The server has an internal configuration error: the chosen variant resource is configured to engage in transparent content negotiation itself, and is therefore not a proper end point in the negotiation process.

508 Loop Detected (WebDAV)

The server detected an infinite loop while processing the request.

510 Not Extended

Further extensions to the request are required for the server to fulfill it.

511 Network Authentication Required

The 511 status code indicates that the client needs to authenticate to gain network access.

参考

相关文章
相关标签/搜索