HTTP状态码表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常或者是出现的错 误,能够根据返回的状态码判断请求是否得到正确的处理很重要。 状态码由3位数字和原因短语组成,例如下图所示:
数字中的第⼀位指定了响应类别,后两位⽆分类,响应类别有⼀下5种:
状态码分类表
const codeMessage = {
200: '服务器成功返回请求的数据。',
201: '新建或修改数据成功。',
202: '一个请求已经进入后台排队(异步任务)。',
204: '删除数据成功。',
400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',
401: '用户没有权限(令牌、用户名、密码错误)。',
403: '用户得到授权,但是访问是被禁止的。',
404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',
406: '请求的格式不可得。',
410: '请求的资源被永久删除,且不会再得到的。',
422: '当创建一个对象时,发生一个验证错误。',
500: '服务器发生错误,请检查服务器。',
502: '网关错误。',
503: '服务不可用,服务器暂时过载或维护。',
504: '网关超时。',
};
各类别常⻅状态码:
2xx (3种)
200 OK:服务器成功返回请求的数据;
204 No Content:⽆内容。服务器成功处理,但未返回内容;
206 Patial Content:部分内容。服务器成功处理了部分GET请求。类似于 FlashGet 或者迅雷这 类的 HTTP 下载⼯具都是使⽤此类响应实现断点续传或者将⼀个⼤⽂档分解为多个下载段同时下 载。该请求必须包含 Range 头信息来指示客户端希望得到的内容范围,并且可能包含 If-Range
来作为请求条件。
3xx (5种)
301 Moved Permanently:永久性重定向,表示请求的资源被分配了新的URL,之后应使⽤更改 的URL;
302 Found:临时性重定向,表示请求的资源被分配了新的URL,希望本次访问使⽤新的URL;
301与302的区别:前者是永久移动,后者是临时移动(之后可能还会更改URL)
303 See Other:表示请求的资源被分配了新的URL,应使⽤GET⽅法定向获取请求的资源;
302与303的区别:后者明确表示客户端应当采⽤GET⽅式获取资源
304 Not Modified:表示客户端发送附带条件(是指采⽤GET⽅法的请求报⽂中包含if-Match、IfModified-Since、If-None-Match、If-Range、If-Unmodified-Since中任⼀⾸部)的请求时,服务器 端允许访问资源,但是请求为满⾜条件的情况下返回改状态码;
307 Temporary Redirect:临时重定向,与303有着相同的含义,307会遵照浏览器标准不会从
POST变成GET;(不同浏览器可能会出现不同的情况);
4xx (4种)
400 Bad Request:表示请求报⽂中存在语法错误;
401 Unauthorized:⽤户没有权限,需要⽤户验证;
403 Forbidden:服务器已经理解请求,但是拒绝此次访问(访问权限出现问题)
404 Not Found:表示服务器上⽆法找到请求的资源,除此之外,也可以在服务器拒绝请求但不 想给拒绝原因时使⽤;
5xx (2种)
500 Inter Server Error:表示服务器发⽣错误。
503 Server Unavailable:表示服务器暂时处于超负载或正在进⾏停机维护,⽆法处理请求。