一、关于本文
文章主要是分两个部分,首先是对HTTP状态码的概述。后面是对常用的14个状态码的具体讲解。
二、对HTTP状态码的概述概述
状态码的职责是当客户端向服务端发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器是正常处理了请求,还是出现了错误。
状态码如200 OK,以三位数字和原因短语组成。
数字中的第一位指定了响应类别,后两位无分类。响应类别有以下五种:
类别 | 原因短语 | |
1XX | Informational(信息性状态码) | 接受的请求正在处理 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5XX | Server Error(服务器错误状态码) | 服务器处理请求错误 |
只要遵循状态码类别的定义,即使改变RFC2616中定义的状态码,或服务器自行创建状态码都没有问题。
仅记录在RFC2616上的HTTP状态码就达40种,若在加上WebDAV(RFC4918、5842)和附加HTTP状态码(RFC6585)等扩展,数量就达到60余种。虽然种类繁多,实际上经常使用的大概只有14种。
三、常用的14个状态码
1、200 OK,204 No Content,206 Partial Content
如果发起一个网络请求,返回的是200。就说明,这次的网络请求服务器正常处理好了,并且也按照客户端的要求返回了所有信息,也算是掏心掏肺的交代了。为什么说是‘按照客户端的要求’?因为如果客户端使用的是HEAD方法请求网络,就算服务器的确可以返回一些实体信息的,既然客户端主动不要,那服务器肯定也就不返回了。
如果发起一个网络请求,返回的是204。就说明,这次的网络请求服务器正常处理了,但是不会返回任何实体的主体。原因是不被允许,这样的话,用户是不知道究竟有没有信息可以返回给客户端的,也许有,也许无,但是不得而知。比如,返回验证码的接口,本来是可以返回正确验证码的,但是频繁的操作,服务器就会发送204。
如果发起一个网络请求,返回的是206。就说明,客户端进行了范围请求,并且服务器成功执行了这部分的GET请求。响应报文中包含由Content-Range指定范围的实体内容。206与200类似,只是206更能体现这次的网络请求行为。
2、301 Moved Permanently,302 Found,303 See Other,304 Not Modified,307 Temporary Redirect
3、400 Bad Request,401 Unauthorized,403 Forbidden,404 Not Found
4、500 Internal Server Error,503 Service Unavailable