## HTTP 状态码

### Means

- 1xx: Informational这意味着已收到请求并且该过程正在继续
- 2xx: Success这意味着该操作已成功接收、理解和接受
- 3xx: Redirection这意味着必须采取进一步行动才能完成请求
- 4xx: Client Error这意味着请求包含不正确的语法或无法完成
- 5xx: Server Error这意味着服务器未能满足明显有效的请求

### 2xx. 成功的

- 200: OK请求没问题
- 201: Created请求完成，并创建了一个新资源
- 202: Accepted接受请求进行处理，但处理未完成
- 203: Non-Authoritative Information实体标头中的信息来自本地或第三方副本，而不是来自原始服务器
- 204: No Content响应中给出了状态码和标头，但响应中没有实体主体
- 205: Reset Content浏览器应清除用于此事务的表单以获取其他输入
- 206: Partial Content服务器正在返回请求大小的部分数据。 用于响应指定 Range 标头的请求。 服务器必须使用 Content-Range 标头指定响应中包含的范围

### 4xx. 客户端错误

- 400: Bad Request服务器不理解该请求
- 401: Unauthorized请求的页面需要用户名和密码
- 402: Payment Required您还不能使用此代码
- 403: Forbidden禁止访问请求的页面
- 404: Not Found服务器找不到请求的页面
- 405: Method Not Allowed请求中指定的方法是不允许的
- 406: Not Acceptable服务器只能生成客户端不接受的响应
- 407: Proxy Authentication Required您必须先通过代理服务器进行身份验证，然后才能提供此请求
- 408: Request Timeout请求花费的时间比服务器准备等待的时间长
- 409: Conflict由于冲突，请求无法完成
- 410: Gone请求的页面不再可用
- 411: Length Required“Content-Length”未定义。 没有它，服务器将不会接受请求
- 412: Precondition Failed请求中给出的前提条件被服务器评估为 false
- 413: Payload Too Large服务器不会接受请求，因为请求实体太大
- 414: URI Too Long服务器不会接受请求，因为 url 太长。 当您将“发布”请求转换为具有长查询信息的“获取”请求时发生
- 415: Unsupported Media Type服务器不会接受请求，因为不支持媒体类型
- 416: Range Not Satisfiable请求的字节范围不可用且超出范围
- 417: Expectation Failed此服务器无法满足在 Expect 请求标头字段中给出的期望
- 426: Upgrade Required服务器拒绝使用当前协议执行请求，但在客户端升级到不同协议后可能愿意这样做
- 451: Unavailable For Legal Reasons此状态代码表示服务器拒绝访问资源作为法律要求的结果

### 1xx. 信息

- 100: Continue服务器只收到了请求的一部分，但只要没有被拒绝，客户端就应该继续请求
- 101: Switching Protocols服务器切换协议
- 102: Processing用于通知客户端服务器已接受完整请求但尚未完成的临时响应

### 3xx. 重定向

- 300: Multiple Choices一个链接列表。 用户可以选择一个链接并转到该位置。 最多五个地址
- 301: Moved Permanently请求的页面已移至新的 url
- 302: Found请求的页面已临时移动到新的 url
- 303: See Other请求的页面可以在不同的 url 下找到
- 304: Not Modified这是对 If-Modified-Since 或 If-None-Match 标头的响应代码，其中 URL 自指定日期以来未修改
- 305: Use Proxy请求的 URL 必须通过 Location 标头中提到的代理访问
- 306: Unused此代码在以前的版本中使用过。 它不再使用，但代码被保留
- 307: Temporary Redirect请求的页面已临时移动到新的 url

### 5xx. 服务器错误

- 500: Internal Server Error请求未完成。服务器遇到了意外情况
- 501: Not Implemented请求未完成。服务器不支持所需的功能
- 502: Bad Gateway请求未完成。服务器收到来自上游服务器的无效响应
- 503: Service Unavailable请求未完成。服务器暂时超载或停机
- 504: Gateway Timeout网关已超时
- 505: HTTP Version Not Supported服务器不支持“http 协议”版本

### RESTful API

:- | -
--- | ---
`200` | 返回成功，GET，DELETE 请求成功
`204` | 无内容，POST 请求成功
`301` | 永久重定向
`302/307` | 临时重定向
`304` | 未修改，自上次请求以来
`331` | 用户名正确，需要密码
`332` | 需要登录帐户
`400` | 错误请求，缺少 API 请求的必需属性
`401` | 未授权，无效凭据进行身份验证将
`403` | 禁地，该请求不被允许
`404` | 未找到，无法访问资
`405` | 方法不允许，不支持该请求
`409` | 冲突，冲突资源已存在
`412` | 该请求被拒绝
`422` | 无法处理，无法处理该实体
`429` | 请求过多，用户超出了应用速率限制
`500` | 服务器错误，在处理请求时，服务器出现问题
`530` | 未登录

### 5xx 永久性否定

:- | -
--- | ---
`500` | 语法错误，命令无法识别。这可能包括诸如命令行太长之类的错误
`501` | 在参数中有语法错误
`502` | 未执行命令
`503` | 错误的命令序列
`504` | 未执行该参数的命令
`530` | 未登录
`532` | 存储文件需要帐户
`550` | 未执行请求的操作。文件不可用（例如，未找到文件，没有访问权限）
`551` | 请求的操作异常终止：未知的页面类型
`552` | 请求的文件操作异常终止：超出存储分配（对于当前目录或数据集）
`553` | 未执行请求的操作。不允许的文件名

永久性否定的完成答复，该命令不成功，错误是永久性的。如果客户端重试命令，将再次出现同样的错误。

## 另见

- 常见 HTTP/FTP/WebSocket 错误代码大全 (github.io)
- HTTP 状态码列表 (wikipedia.org)
- FTP 状态码列表 (wikipedia.org)
- MDN CloseEvent (mozilla.org)
- HTTP 404 (wikipedia.org)
- List of FTP server return codes (wikipedia.org)
- HTTP概述 (mozilla.org)
- Help for HTTP error 403: “Forbidden” (getnetgoing.com)
- 实用的 RESTful API 最佳实践 (vinaysahni.com)