HTTP状态码、HTTP Status Code、HTTP常见状态码查询

类别 说明
1xx

1xx类型的状态码代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。

HTTP/1.0协议规范中没有定义任何1xx状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送1xx响应。 这些状态码代表的响应都是信息性的,标示客户应该采取的其他行动。

2xx

2xx类型的状态码代表请求已成功被服务器接收、理解、并接受。

3xx

3xx类型的状态码代表需要客户端采取进一步的操作才能完成请求。 通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的Location域中指明。

当且仅当后续的请求所使用的方法是GET或者HEAD时,用户浏览器才可以在没有用户介入的情况下自动提交所需要的后续请求。按照HTTP/1.0协议规范的建议,浏览器不应自动访问超过5次的重定向。

4xx

4xx类型的状态码代表客户端看起来可能发生了错误,妨碍了服务器的处理。

5xx

5xx类型的状态码代表服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。

常见的HTTP状态码

状态码 说明
100 Continue 服务器已经接收到请求头,并且客户端应继续发送请求主体(在需要发送身体的请求的情况下:例如,POST请求),或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。
101 Switching Protocols 服务器已经理解了客户端的请求,并将通过Upgrade消息头通知客户端采用不同的协议来完成这个请求。在发送完这个响应最后的空行后,服务器将会切换到在Upgrade消息头中定义的那些协议。
200 OK 请求已成功 请求所希望的响应头或数据体将随此响应返回
201 Created 请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其URI已经随Location头信息返回。假如需要的资源无法及时建立的话,应当返回'202 Accepted'。
202 Accepted 服务器已接受请求,但尚未处理。正如它可能被拒绝一样,最终该请求可能会也可能不会被执行。在异步操作的场合下,没有比发送这个状态码更方便的做法了。
204 No Content 服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息。响应可能通过实体头部的形式,返回新的或更新后的元信息。
206 Partial Content 服务器已经成功处理了部分GET请求

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

该请求必须包含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响应返回的内容。

301 Moved Permanently

被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。

新的永久性的URI应当在响应的Location域中返回。除非这是一个HEAD请求,否则响应的实体中应当包含指向新的URI的超链接及简短说明。

如果这不是一个GET或者HEAD请求,因此浏览器禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化。

注意:对于某些使用HTTP/1.0协议的浏览器,当它们发送的POST请求得到了一个301响应的话,接下来的重定向请求将会变成GET方式。

302 Found

请求的资源现在临时从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。

新的临时性的URI应当在响应的Location域中返回。除非这是一个HEAD请求,否则响应的实体中应当包含指向新的URI的超链接及简短说明。

如果这不是一个GET或者HEAD请求,那么浏览器禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化。

303 See Other 对应当前请求的响应可以在另一个URI上被找到,而且客户端应当采用GET的方式访问那个资源。

这个方法的存在主要是为了允许由脚本激活的POST请求输出重定向到一个新的资源。这个新的URI不是原始资源的替代引用。

307 Temporary Redirect 请求的资源现在临时从不同的URI响应请求。

与302类似,但是307状态码不允许浏览器将原本为POST的请求重定向到GET请求上。

308 Permanent Redirect 被请求的资源已永久移动到新位置。

与301类似,但是308状态码不允许浏览器将原本为POST的请求重定向到GET请求上。

304 Not Modified 如果客户端发送了一个带条件的GET请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。

304响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。

该响应必须包含以下header信息中的一个:Date, ETag, Server, Vary除非这些header信息在cache中已经设定。

400 Bad Request 由于明显的客户端错误(例如,格式错误的请求语法,太大的大小,无效的请求消息或欺骗性路由请求),服务器不能或不会处理该请求。

客户端不应该在未经修改的情况下重复提交这个请求。

401 Unauthorized 参见RFC 7235。类似于403 Forbidden,401语义即"未认证",即用户没有必要的凭据。

该状态码表示当前请求需要用户验证。该响应必须包含一个适用于被请求资源的WWW-Authenticate信息头用以询问用户信息。

客户端可以重复提交一个包含恰当的Authorization头信息的请求。如果当前请求已经包含了Authorization证书,那么401响应代表着服务器验证已经拒绝了那些证书。

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

与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。如果这不是一个HEAD请求,而且服务器希望能够讲清楚为何请求不能被执行,那么就应该在实体内描述拒绝的原因。

当然服务器也可以返回一个404响应,假如它不希望让客户端获得任何信息。

404 Not Found 请求失败,请求所希望得到的资源未被在服务器上发现。

没有信息能够告诉用户这个状况到底是暂时的还是永久的。假如服务器知道情况的话,应当使用410状态码来告知旧资源因为某些内部的配置机制问题,已经永久的不可用,而且没有任何可以跳转的地址。

404这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下。

405 Method Not Allowed 请求行中指定的请求方法不能被用于请求相应的资源。

该响应必须返回一个Allow头信息用以表示出当前资源能够接受的请求方法的列表。

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

408 Request Timeout 请求超时。

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

409 Conflict 由于和被请求的资源的当前状态之间存在冲突,请求无法完成。

这个代码只允许用在这样的情况下才能被使用:用户被认为能够解决冲突,并且会重新提交新的请求。

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

这样的状况应当被认为是永久性的。如果可能,拥有链接编辑功能的客户端应当删除所有指向这个地址的引用。

413 Payload Too Large 服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器愿意或者能够处理的范围。

此种情况下,服务器可以关闭连接以免客户端继续发送此请求。

429 Too Many Requests 用户在给定的时间内发送了太多的请求。

响应中可能会包含一个Retry-After头,提示用户多长时间后可以再次尝试。

500 Internal Server Error 服务器遇到了不知道如何处理的情况。

服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序代码出错时出现。

501 Not Implemented 服务器不支持当前请求所需要的某个功能。

当服务器无法识别请求的方法,并且无法支持其对任何资源的请求时,适合使用这个状态码。

502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。

502错误通常不是客户端能够修复的,而是需要由途经的Web服务器或者代理服务器对其进行修复。

503 Service Unavailable 服务器目前无法使用(由于超载或停机维护)。

通常,这只是暂时状态。如果能够预计延迟时间,那么响应中可以包含一个Retry-After头用以标明这个延迟时间。如果没有给出这个Retry-After信息,那么客户端应当以处理500响应的方式处理它。

504 Gateway Timeout 作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。

注意:某些代理服务器在DNS查询超时时会返回400或者500错误。