状态码分类
1XX //信息提示
2XX //成功
3XX //重定向
4XX //客户端错误
5XX //服务端错误
常用状态码
- 200
OK - 301
Moved Permanently - 400
Bad Request - 404
Not Found - 409
Conflict - 410
Gone - 500
Internal Server Error
1XX系列-通知
仅在与HTTP服务器沟通时使用。
-
100
Continue常用指数:★★
继续,对一个LBYL(look-before-you-leap)请求的一个可能的响应。代表客户端应重新发送初始请求,并在请求中附上第一次请求时未提供的(可能很大或者包含敏感信息的)表示。状态码
使用的场景:客户端需要发送一个比较大的文件,不确定服务端是否接受,客户端发送一个请求,包含请求头
Expect: 100-continue,服务端觉得可以接受,返回continue,客户端继续发送大文件。如果不接受,就返回Expectation Failed
2XX系列-成功
表明操作成功。
-
200
success常用指数:★★★★★
成功,代表服务端已经收到并成功处理了请求,通常来说,携带了请求的数据||文件||响应头。
-
201
Created常用指数:★★★★
创建新资源,代表服务端根据请求创建了新的资源,通常是通过PUT方法调用后返回的状态。通过会在响应头的
字段加上新创建资源的url
Content-Location: /new.html。 -
204
No Content常用指数:★★★★
没有内容,代表服务端返回的响应无内容只是成功处理了请求,但没有返回任何内容。使用场景在:可能会出现仅需要响应的请求头,但没有内容的情况。
-
206
Partial Content部分GET(partial GET)的服务常用指数:★★★★,其他请求:★
部分内容,表示服务端返回的数据是部分数据,使用场景:当客户端通过使用range头字段进行文件分段下载时返回
Partial Content。
3XX系列-重定向
表明客户端需要做些额外工作才能得到所需要的资源。通常用于GET请求。他们通常告诉客户端需要向另一个URI发送GET请求,才能得到所需的表示。那个URI就包含在Location响应报头里。
-
301
Moved Permanently常用指数:★★★★★ 永久转移,当客户端触发的动作引起了资源URI的变化时发送此响应代码。另外,当客户端向一个资源的旧URI发送请求时,也发送此响应代码。
-
303
See Other常用指数:★★★
您可以去其他地方瞧瞧,可能会有更适合的资源。就是资源不在当前URL,指定另一个url。
-
304
Not Modified常用指数:★★★★
不能修改,和
类似:响应实体主体都必须为空。但204用于没有主体数据的情况,而304用于有主体数据,但客户端已拥有该数据,没必要重复发送的情况。
使用场景:客户端在发送GET请求时附上了一个值为Sunday的If-Modified-Since报头,而客户端所请求的表示在服务器端自
Sunday以来一直没有改变过,服务器可以返回一个响应,但由于客户端已拥有该表示,因此重复发送该表示只会白白浪费宽带。所以可以使用
状态码。
响应报头:需要提供Date报头。Etag与Content-Location报头的值,应该跟返回
响应时的一样。若Expires, Cache-Control及Vary报头的值自上次发送以来已经改变,那么就要提供这些报头。
4XX系列-客户端错误
表明客户端出现错误。不是认证信息有问题,就是表示格式或HTTP库本身有问题。客户端需要自行改正。
-
400
Bad Request常用指数:★★★★ 错误请求,通用的客户端错误状态,就是当其他4xx状态码不适用时,使用的
备胎错误码。通常也表示服务器收到客户端通过PUT或者POST请求提交的表示,表示的格式正确,但服务器不懂它什么意思的情况。 -
401
Unauthorized常用指数:★★★
未授权,代表请求服务没有授权,客户端发送请求,查看收到
响应,用来知晓需要发送何种认证授权以及证书的格式。通常如果服务器不想让未授权的用户访问某个资源,直接返回
而不是
。但是这样做有缺点:客户端需要事先知道服务器接受哪种认证--这将导致HTTP摘要认证无法工作。
-
403
Forbidden常用指数:★★
禁止,表示服务器收到了请求但是不想做出响应。和
不同,一般
常用于一个资源只允许在特定时间段或者特定IP地址的用户访问的情况。
暗示了所请求的资源确实存在。和
一样,如果不想让用户知道资源确实存在,可以直接返回
而不是
。缺点同上。
-
404
Not Found常用指数:★★★★★
没有被找到,表示请求的资源不存在。
-
405
Method Not Allowd常用指数:★★★
方法不被允许,客户端试图使用不支持的HTTP方法。通常一个请求只支持GET方法,但是客户端使用PUT方法访问。返回
而在响应头:
Allow字段列出本资源支持哪些HTTP方法,Allow:GET,POST -
409
Conflict常用指数:★★★
请求冲突。请求会导致服务器的资源处于冲突状态。例如试图修改某个字段,但于已存在的数据冲突了。
-
410("Gone") 常用指数:★★★
已请求过,
类似,但它提供的有用信息更多一些。服务器接受到请求,但该资源现在不存在了的情况。服务器不知道该资源的新URI,服务器要是知道该URI的话,它就发送响应代码301一样,都有暗示客户端不应该再请求该URI的意思,不同之处在于:410只是指出该资源不存在,但没有给出该资源的新URI。
-
417
Expectation Failed常用指数:★★
期望失败。与
相反,表示拒绝LBYL请求。
这个响应代码跟404类似,但它提供的有用信息更多一些。这个响应代码用于服务器知道被请求的URI过去曾指向一个资源,但该资源现在不存在了的情况。服务器不知道 该资源的新URI,服务器要是知道该URI的话,它就发送响应代码301.410和310一样,都有暗示客户端不应该再请求该URI的意思,不同之处在于:410只是指出该资源不存在,但没有给出该资源的新URI。RFC2616建议“为短期的推广服务,以及属于个人但不继续在服务端运行的资源”采用410.
##5XX系列-服务端错误
表明服务器端出现错误。一般来说,这些代码意味着服务器处于不能执行客户端请求的状态,此时客户端应稍后重试。有时,服务器能够估计客户端应在多久之后重试。并把该信息放在Retry-After响应报头里。
-
500
Internal Server Error常用指数:★★★★★
服务期方面的问题。实体主体中的文档(如果存在的话)是一个错误消息。该错误消息通常无济于事,因为客户端无法修复服务器方面的问题。
-
502
Bad Gateway常用指数:★★网关损坏,服务器作为网关且从上游服务器获取到了一个无效的HTTP响应.可能客户端使用了错误的代理,或者上游服务器访问过多挂了。
碎碎念
越写越发现,好多中小公司因为水平参差不齐,工程中很少是完全按照HTTP设计的,将各种情况分为不同状态码,甚至大厂都是混乱的(特指微信小程序),基本上都是网络正常返回200,网络错误返回500,再在200里包含一个status字段来定义各种情况。