状态码的作用就是描述返回的请求结果。
状态码由 3 位数字和原因短语组成,如 200 OK
数字第一位指响应类型,后两位无分类。
code | 类别 | 原因短语 |
---|---|---|
1XX | Informational(信息性状态码) | 接收的请求正在处理 |
2XX | Success(成功状态码) | 正常处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5XX | Server Error(服务器错误状态码) | 服务器处理请求错误 |
2XX
200 OK
客户端发来的请求在服务器被正常处理了。
204 No Content
该状态码代表服务器接收的请求已成功处理,但返回的响应报文中不含实体的主体部分。 (请求处理成功,但没有资源可返回)
206 Partial(部分) Content
范围请求,服务器成功执行了部分 GET 请求。 (类似断点续传,把一个 10000 字节的资源分词下载下来)
响应报文中包含由 Content-Range
指定范围的实体内容。
执行范围请求时,会用首部字段 Range 来制定资源的 byte 范围,形式如下:
<code>//5001~10000 字节 Range:bytes=5001-10000 //5001 字节之后的全部 Range:bytes=5001- //从一开始到 3000 字节和 5000~7000 字节的多重范围 Range:bytes=-3000, 5000-700 </code>
对于多重范围的范围请求,响应会在首部字段 Content-Type 标明 multipart/byteranges
后返回响应报文。
如果服务器无法响应范围请求,则会返回状态码 200 OK 和完整的实体内容
。
3XX
301 Moved Permanently
永久性重定向,请求的资源已被分配了新的 URI 。
302 Found
临时性重定向,临时被定位到其他位置。
303 See Other
303 状态码和 302 功能相同,但 303 明确表示客户端应采用 GET 方法获取资源,这点和 302 不同。
当 301 、 302 、 303 响应状态码返回时,几乎所有的浏览器都会把 POST 改成 GET,并删除请求报文内的主体,之后请求会自动再次发送。
304 Not Modified
客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件。
附带条件的请求指,采用 GET 放的的请求报文中包含 If-Match 、 If-Modified-Since 、 If-None-Match 、 If-Range 、 If-Unmodified-Since 中任一首部。
307 Temporary Redirect
临时重定向,与 302 类似。
4XX
400 Bad Request
请求报文中存在语法错误。浏览器会像 200 OK 一样对待该状态码。
401 Unauthorized
发送的请求需要有通过 HTTP 认证 (BASIC 认证、 DIGEST 认证) 的认证信息。
如果之前已进行过一次请求,则表示用户认证失败。
返回含有 401 的响应必须包含一个适用于被请求资源的 WWW Authenticate 首部用以质询 (challenge) 用户信息。浏览器接收刅 401,会弹出认证用的对话窗口。
403 Forbidden
对请求资源的访问被服务器拒绝了。
未获得稳健系统的访问授权,访问权限出问题 (从未授权的发送源 IP 地址视图访问) 都有可能。
服务器想对拒绝理由进行说明的话,可以在实体的主体部分对原因进行描述。
404 Not Found
无法找到请求的资源,也可能是服务器拒绝请求且不想说明理由。
5XX
500 Internal Server Error
服务器执行请求时发生错误,可能是应用 BUG 或临时故障。
503 Service Unavailable
服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。
可写入 Retry After
首部字段返回给客户端。
涉及的知识点:
MIME(Multipurpose Internet Mail Extensions) 多用途引体网邮件扩展机制。
WebDAV(Web-based Distributed Authoring and Versioning) 基于万维网的分布式创作和版本控制 (RFC4918 5842)
附加 HTTP 状态码 (RFC6585)