客户端发出请求后,需要获得反馈形成一个请求闭环。我们对反馈的结果加以分类,用状态码来标记。这就是响应状态码。
到今天为止,HTTP最常用的网络协议版本仍然是HTTP/1.1,它在1999年发布的RFC2616 Status-Line中列举了大约40种常见的响应状态码:
响应状态码的定义是开放的,允许自行扩展。
常用响应状态码
响应状态码是由3位十进制的数字组成,分为五类,分别是以1到5开头,我们列举常用来说明:
1xx
1xx类是提示信息,表示的是协议处理的中间状态,还有后续操作,这个在实际开发中可能比较少见。
2xx
2xx这个是最常见的之一,表示服务端成功响应了客户端的请求,这也是客户端最希望看到的结果。
200 OK:表示请求一切正常,有正常的返回数据。
204 Not Content:也是一种正常状态,和200 OK类似,只是响应头中没有body数据。
'206 Partial Content':是HTTP分块下载和断点续传的基础。它其实也表示请求的正常状态,只是响应的body数据是整块数据的片段。它一般有伴随着头字段Content-Range返回,如:
Content-Range: bytes 0-99/2000
含义是本次请求共返回了2000个字节中的前100个。
3xx
3xx表示的是客户端的请求资源发生了变动,需要通过重定向来找到最新的资源。比较常见的状态码是301和302,它们虽然都是重定向,但也有区别:
301 Moved Permanently:表示的是永久重定向,资源已经不存在了,以后都需要获取新的资源。
302 Found:临时性的,可能原资源服务器暂时需要维护。
4xx
4xx表示的是客户端发送的请求报文有错误,服务端无法处理请求。算是一类错误码。
400 Bad Request:是一个笼统的错误码,具体原因不清楚,没有明确返回。
403 Forbidden:是服务器禁止客户端请求当前资源。
404 Not Found:这个很常见,表示客户端请求的资源在服务器不存在。
5xx
5xx是服务器错误,客户端请求报文没问题,服务器内部出错了。常见状态码有:
500 Internal Server Error:这也是是错误的通用返回错误码,具体错误未知。
501 Not Implemented:功能未实现。
502 Bad Gateway:服务器作为网关或者代理时出现的错误,服务器本身服务正常,但访问的后端服务器发生了错误。
503 Service Unavailable:表示当前服务器很忙,暂时无法响应请求。
参考
MDN文档:HTTP 响应状态码