状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。
状态码如 200 OK,以 3 位数字和原因短语组成。
数字中的第一位指定了响应类别,后两位无分类。响应类别有以下 5 种。
类别 | 原因短语 | |
---|---|---|
1XX | 信息性状态码(Informational) | 接收的请求正在处理 |
2XX | 成功状态码(Success) | 请求正常处理完毕 |
3XX | 重定向状态码(Redirection) | 需要进行附加操作以完成请求 |
4XX | 客户端错误状态码(Client Error) | 服务器无法处理请求 |
5XX | 服务器错误状态码(Server Error) | 服务器处理请求出错 |
仅记录在 RFC2616 上的 HTTP 状态码就达 40 种,加上一些附加的状态码等扩展,数量就达 60 余种。实际上开发中常用的状态码大概只有 14 种。
状态码 | 原因短语 | 说明 |
---|---|---|
200 | OK | 服务器处理请求成功 |
204 | No Content | 请求成功,无响应主体 |
206 | Partial Content | 范围请求 |
301 | Moved Permanently | 永久重定向,请求的资源已被分配新的URI(永久) |
302 | Found | 临时重定向,请求的资源已被分配新的URI(临时) |
303 | See Other | 临时重定向(规定使用GET方法重新发起请求) |
304 | Not Modified | 请求的附加条件不满足。返回该状态码时,没有响应实体主体部分 |
307 | Temporary Redirect | 临时重定向(遵照浏览器标准,再次发起请求时不会从POST变成GET) |
400 | Bad Request | 请求报文有语法错误,服务器无法理解 |
401 | Unauthorized | 请求需要认证,返回的响应首部必须包含 WWW-Authenticate |
403 | Forbidden | 服务器拒绝请求(比如未获得访问权限) |
404 | Not Found | 服务器上无法找到请求资源 |
500 | Internal Server Error | 服务器处理请求出错 |
503 | Service Unavailable | 服务器正忙(表示服务器处于超负载或正在进行停机维护) |
解释:301、302标准是禁止请求方法POST变换成GET,但实际上大家都会这么做。