HTTP状态码是服务器对客户端请求的响应代码,表示了请求被接收、理解和处理的状态。状态码被分为五个类别,每个类别有其特定的用途:
1xx:信息响应
- 100 Continue:客户端应继续其请求
- 101 Switching Protocols:服务器根据客户端的请求切换协议
- 102 Processing(WebDAV):服务器已接受请求,但尚未处理完成
2xx:成功
- 200 OK:请求成功,服务器返回请求的资源
- 201 Created:请求成功并且服务器创建了新的资源
- 202 Accepted:服务器已接受请求,但尚未处理
- 203 Non-Authoritative Information:服务器是一个转换代理服务器(transforming proxy,如Web加速器)并且接收了200 OK从其上游,但返回的响应来自原始服务器的200 OK的转换版本
- 204 No Content:服务器成功处理了请求,但不需要返回任何实体内容
- 205 Reset Content:服务器成功处理了请求,且没有返回任何内容,但是要求请求者重置文档视图
- 206 Partial Content:服务器成功处理了部分GET请求
3xx:重定向
- 300 Multiple Choices:针对请求,服务器可执行多种操作。服务器可根据请求选择一项操作,或提供操作列表供客户端选择
- 301 Moved Permanently:请求的网页已永久移动到新位置
- 302 Found:服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行后续请求
- 303 See Other:服务器返回这个状态码来重定向客户端到GET请求指定的资源
- 304 Not Modified:自从上次请求后,请求的网页未修改过
- 307 Temporary Redirect:服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行后续请求
- 308 Permanent Redirect:请求的资源现在永久位于另一个URI,这和301类似,但使用GET方法重定向
4xx:客户端错误
- 400 Bad Request:服务器不理解请求的语法
- 401 Unauthorized:请求要求身份验证
- 403 Forbidden:服务器拒绝请求
- 404 Not Found:服务器找不到请求的网页
- 405 Method Not Allowed:禁用请求中指定的方法
- 406 Not Acceptable:无法使用请求的内容特性响应请求的网页
- 407 Proxy Authentication Required:此状态码类似于401(Unauthorized),但指定请求者应当授权使用代理
- 408 Request Timeout:服务器等候请求时发生超时
- 409 Conflict:请求与服务器当前状态冲突
- 410 Gone:请求的资源已被永久删除
- 411 Length Required:服务器不接受不含有效内容长度标头字段的请求
- 412 Precondition Failed:服务器未满足请求者在请求中设置的其中一个前提条件
- 413 Payload Too Large:请求实体过大
- 414 URI Too Long:请求的URI过长
- 415 Unsupported Media Type:请求的格式不受请求页面的支持
- 416 Range Not Satisfiable:客户端请求的范围无效
- 417 Expectation Failed:服务器无法满足Expect的请求头信息
5xx:服务器错误
- 500 Internal Server Error:服务器遇到错误,无法完成请求
- 501 Not Implemented:服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码
- 502 Bad Gateway:服务器作为网关或代理,从上游服务器收到无效响应
- 503 Service Unavailable:服务器目前无法使用(由于超载或停机维护)
- 504 Gateway Timeout:服务器作为网关或代理,但是没有及时从上游服务器收到请求
- 505 HTTP Version Not Supported:服务器不支持请求中所用的HTTP协议版本
- 506 Variant Also Negotiates(透明内容协商):服务器有一个内部配置错误:透明内容协商协议导致服务器选择自身的透明内容协商,从而不是选择一个适合请求的最佳变体
- 507 Insufficient Storage(WebDAV; RFC 4918)
- 508 Loop Detected(WebDAV; RFC 5842)
每个状态码都有其特定的意义和应用场景,了解和正确使用这些状态码对开发高质量的Web应用和API至关重要。