HTTP常用状态码及说明

HTTP常用15个状态码及说明

状态码概念

为什么要有状态码这个概念呢?

状态码的职责就是客户端向服务器发起请求时,描述返回的请求的结果,借助状态码,用户可以知道服务器是正常处理了请求,还是出现了错误,如果出现了错误,也可以根据状态码分析具体是哪一端出现的错误

状态码的组成

状态码由一个三位数和原因短语组成

例如:200 OK200就是状态码,OK就是原因短语

状态码的类别

类别原因短语
1XXInformational(信息性状态码)接受的请求正在处理
2XXSuccess(成功状态码)请求正常处理完毕
3XXRedirection(重定向状态码)需要进行附加操作以完成请求
4XXClient Error(客户端错误状态码)服务器无法处理请求
5XXServer Error(服务端错误状态码)服务器处理请求出错

状态码的数量?

仅记录在RFC2616上的HTTP状态码就有40种,若再加上WebDAV和附加HTTP状态码(RFC6585)等扩展,数量就有60多种,但是实际上常用的大概就15种常用的。

常用状态码

2XX 成功

  • 200 OK

    表示从客户端发来的请求在服务端被正常处理了

  • 204 No Content

    表示请求被服务器正常处理,但是返回的响应报文中没有实体部分,一般用在只需要客户端往服务器发消息,而客户端不需要新内容的时候使用

  • 206 Partial Content

    我只想要其中一部分

    就是客户端进行了范围请求,而服务器成功执行了这次请求

    场景:多线程下载一个文件,每个线程请求下载这个文件不同部分的内容

3XX 重定向

  • 301 Moved Permanently

    永久性重定向

  • 302 Found

    临时重定向

  • 303 See Other

    与302相同,但希望以GET的请求方式来请求新资源

注意:当返回301、302、303时,几乎所有浏览器都会把POST改成GET重新请求,虽然301和302标准时禁止的,但大家都会这么做

  • 304 Not Modified

    注意:这个和重定向没关系

    这个是客户端发送附带条件(请求报文中加If-Match、If-Range)的请求时,服务端允许访问资源,但是不满足条件,会返回这个状态码

  • 307 Temporary Redirect

    临时重定向,和302一样,只不过大家会遵守307的标准,POST不会变GET请求

4XX 客户端错误

  • 400 Bad Request

    请求报文中存在语法错误

    浏览器会向对待200一样对待400

  • 401 Unauthorized

    未授权,请求中没有认证信息

  • 403 Forbidden

    客户端请求的资源,是服务器禁止访问的资源,就会返回403

  • 404 Not Found

    客户端访问的资源在服务器上不存在

5XX 服务端错误

  • 500 Internal Server Error

    服务器出bug了

  • 502 Bad Gateway

    网关错误,服务器作为网关或代理,从上游服务器收到无效响应

  • 503 Service Unavailable

    表示服务器现在正超负载运行,或停机维护,暂时无法处理请求