前言
http的状态码标记在响应报文的响应首部的响应行中,http状态码有约40种左右 ,这里记录我开发过程中遭遇的部分常用状态码
http状态码的类别
一般情况下http的状态码首位数字代表着状态所在的请求阶段(当然也有例外)。而且随着http协议的发展,有一些状态码正在慢慢被取消使用。
- 1xx:请求正在处理(请求正在处理)
- 2xx:正常处理完毕(成功)
- 3xx:需要附加操作来完成请求(重定向,请求没有成功)
- 4xx:服务器无法处理请求(客户端错误请求的过程有一些问题,可能是请求没写对,也可能是没有权限,或者找不到对应的资源)
- 5xx:服务器处理请求出错(服务器的锅)
一些常用的状态码
200:正常处理
204:请求成功,但是没有可以返回的资源,只返回响应首部没有实体主体
206:客户端进行了范围请求,服务器成功响应了这部分请求(这里响应首部字段必须有一个content-Range来说明响应范围)
301:永久性重定向,要求以后都用新的URI请求
302:临时性重定向,要求临时用新的URI访问;它不允许在重定向的过程中变换请求方法(虽然很多人经常不遵守这一规定)
303:与302类似,但是要求改用GET请求进行重定向
304:虽然是3字辈,但是跟重定向没有半毛钱关系。找到了对应资源,但是不满足请求中包含的一些筛选条件(比如过期了)(这些条件由几个请求首部字段控制)
307:和302就是一样的
400:请求不能被识别,可能是请求报文的语法错误
401:需要附带http验证,或之前的http验证失败了(这里需要有个响应首部字段www-Authenticate用以质询用户信息)
403:没有访问的权限
404:无法找到对应资源,或者你拒绝请求,但是不想跟客户端说明原因,也可以用这个
500:服务器出错
503:服务器超负载或正在维护(这里可以加一个响应首部字段Retry-After用来告诉客户端以上状况的解决时间)