RFC中定义的状态码很多,这里我们列出最常见的一些状态码:
状态码 描述 详细说明101 Switching Protocol 该代码是响应客户端的 Upgrade 标头发送的,并且指示服务器也正在切换的协议。
200 OK 请求成功。
204 No Content 服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息。
用这个状态码区分成功状态下又返回内容和没返回内容的响应。
206 Partial Content 服务器已经成功处理了部分 GET 请求。通过HTTP的分块下载,获取资源的部分时返回。该请求必须包含 Range 头信息来指示客户端希望得到的内容范围,并且可能包含 If-Range 来作为请求条件。
206状态码通常会携带Content-Range,用于表示报文里面body数据的具体范围。
301 Moved Permanently 永久重定向,将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一。
302 Found 临时重定向,客户端下次应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。
304 Not Modified 如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。304 响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。
400 Bad Request 语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。
401 Unauthorized 当前请求需要用户验证。该响应必须包含一个适用于被请求资源的 WWW-Authenticate 信息头用以询问用户信息。客户端可以重复提交一个包含恰当的 Authorization 头信息的请求。
403 Forbidden 服务器已经理解请求,但是拒绝执行它。如果这不是一个 HEAD 请求,而且服务器希望能够讲清楚为何请求不能被执行,那么就应该在实体内描述拒绝的原因。当然服务器也可以返回一个 404 响应,假如它不希望让客户端获得任何信息。
404 Not Found 请求失败,请求所希望得到的资源未被在服务器上发现。
究竟是不是真的资源不存在呢?还得看程序是怎么写的。
405 Method Not Allowed 请求行中指定的请求方法不能被用于请求相应的资源。该响应必须返回一个Allow 头信息用以表示出当前资源能够接受的请求方法的列表。
408 Request Timeout 请求超时。客户端没有在服务器预备等待的时间内完成一个请求的发送。客户端可以随时再次提交这一请求而无需进行任何更改。
409 Conflict 由于和被请求的资源的当前状态之间存在冲突,请求无法完成。
413 Payload Too Large 请求提交的实体数据大小超过了服务器愿意或者能够处理的范围。此种情况下,服务器可以关闭连接以免客户端继续发送此请求。如果这个状况是临时的,服务器应当返回一个 Retry-After 的响应头,以告知客户端可以在多少时间以后重新尝试。
429 Too Many Requests 用户在给定的时间内发送了太多请求(“限制请求速率”)。
431 Request Header Fields Too Large 请求头字段太大( Request Header Fields Too Large)
500 Internal Server Error 服务器遇到了不知道如何处理的情况。通常用来捕获服务器异常,统一返回500,避免输出详细错误堆栈给别人利用。
501 Not Implemented 此请求方法不被服务器支持且无法被处理。只有GET和HEAD是要求服务器支持的,它们必定不会返回此错误代码。
502 Bad Gateway 此错误响应表明服务器作为网关需要得到一个处理这个请求的响应,但是得到一个错误的响应。
503 Service Unavailable 服务器没有准备好处理请求。 常见原因是服务器因维护或重载而停机。
504 Gateway Timeout 当服务器作为网关,不能及时得到响应时返回此错误代码。
更多状态码说明:
List of HTTP status codes
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status