计算机之间的通信以协议为共同基础,客户端与服务端都按照协议的约定进行通信。HTTP的状态码在HTTP协议内规定了很多状态。客户端请求服务端后,服务端就返回结果,同时返回状态码。告诉客户端,本次请求是成功还是失败,还是要客户端做什么操作。HTTP协议规定,一个状态码就代表一个状态。
1XX |
Information状态码,表示信息正在处理 |
2XX |
Success状态码,表示请求正常处理完成 |
3XX |
Redirection状态码,表示需要客户端进行附加操作(如跳转) |
4XX |
Client Error状态码,通常是由客户端的错误导致 |
5XX |
Server Error状态码,通常是由服务端的错误导致 |
总结:状态码分为客户端错误状态码、服务端错误状态码,成功状态码,重定向状态码等。
以下是常见状态码:
1、2XX Success
(1)200 OK
表示客户端发送的请求已被服务端成功接收并且正确处理。
根据不同的请求方法返回结果:
GET:请求的对应资源作为相应返回。
HEAD:请求的对应资源的响应头会作为响应返回,不包括响应体
POST:返回处理对应请求的结果。
(2)204 No Content
表示服务器接收到的请求已经处理完毕,但服务器不需要返回响应体,
如客户端是浏览器的话,发出的请求返回204响应,那么浏览器显示的页面就不会更新。
(3)206 Partial Content
表示客户端通过发送范围请求头Range抓取资源的部分数据。
HTTP请求取消或中断,客户端有可能会获取不到完整的的数据(数据传输中断)。因此作为客户端,在获取到一部分数据后,更希望在后续请求中获取剩余数据,而不是一下子获取所有数据,同样有利于存储空间不足的设备。
2、3XX Redirection
(1)301 Moved Permanently
永久性重定向。表示请求的页面资源现在已经永久转移位置了。服务端返回GET请求或HEAD请求的响应时,会自动将请求者转到新位置。
(2)302 Found
临时重定向。表示请求的页面资源已经转移位置。与301相似,但不同之处在于,302代表的资源不是被永久移动,只是临时性质的。有可能以后还会变化。
(3)303 See Other
表示请求的资源存在另一个URI,应使用GRT方法定向获取请求的资源。与302不同之处在于302不会改变请求方法,如果请求方法为POST。那么重定向的请求也应该是POST。而对于303,使用POST请求,那么重定向的请求方法变为GET。
(4)304 Not Modified
表示资源已经找到了,但是和上次相比没有更新。浏览器读取缓存。
(5)307 Temporary Redirect
临时重定向。与302、303有类似的含义,但是307不会指定客户端要用什么请求方法请求重定向。(302指定使用原因请求方法,303指定使用GET方法)
4、4XX Client Error
(1)400 Bad Request
表示该请求报文中存在语法错误,导致服务端无法理解该请求。客户端需修改请求的内容后再次发送请求。
(2)401 Unauthorized
表示发送的请求需要通过HTTP认证(Basic认证、Digest认证)的认证信息。
(3)403 Forbidden
表示请求资源的访问被服务器拒绝。如为获得文件系统的访问权限,访问权限出现问题,从未授权的发送源IP地址试图访问都可能造成403响应。
(4)Not Found
表示服务器上无法找到指定的资源。通常用于服务不想透露拒绝请求的原因,或没有其他的响应可提供。
5、5XX Server Error
(1)500 Internet Server Error
表示服务端在执行请求时发生错误。
(2)503 Service Unavailable
比碍事服务器暂时处于超负载或正在进行停机维护,现无法处理请求。