HTTP状态码是HTTP协议中用于表示请求结果的三位数字代码。它们由Internet Engineering Task Force(IETF)在RFC 2616中定义,并在后续的RFC文档中进行了扩展。HTTP状态码分为五个类别,每个类别代表不同类型的响应状态。
以下是HTTP状态码的分类及其常见状态码的详细说明:
1. 1xx – 信息性状态码
这些状态码表示临时的响应,通常用于表示请求已被接收,但仍在处理中。
- 100 Continue:服务器已接收到请求的头部,客户端可以继续发送请求体。
- 101 Switching Protocols:服务器已接收到请求,并同意切换到客户端请求的协议。
- 102 Processing:服务器已接收到请求,正在处理中(WebDAV扩展)。
2. 2xx – 成功状态码
这些状态码表示请求已成功处理。
- 200 OK:请求成功,响应体中包含请求的资源。
- 201 Created:请求成功,服务器创建了新的资源,通常用于POST请求。
- 202 Accepted:请求已接受,但尚未处理完成。
- 203 Non-Authoritative Information:请求成功,但响应体中的信息不是权威的。
- 204 No Content:请求成功,但响应体中没有内容。
- 205 Reset Content:请求成功,客户端应重置文档视图。
- 206 Partial Content:请求成功,响应体中包含部分资源(支持范围请求)。
- 207 Multi-Status:请求成功,响应体中包含多个状态信息(WebDAV扩展)。
- 208 Already Reported:请求成功,但状态已被报告(WebDAV扩展)。
- 226 IM Used:请求成功,响应体中包含IM协议的使用信息。
3. 3xx – 重定向状态码
这些状态码表示客户端需要采取进一步的操作来完成请求,通常需要重定向到另一个URL。
- 300 Multiple Choices:请求有多个可能的响应,客户端需要选择一个。
- 301 Moved Permanently:请求的资源已永久移动到新的URL。
- 302 Found:请求的资源已临时移动到新的URL。
- 303 See Other:请求的资源可以通过另一个URL访问。
- 304 Not Modified:请求的资源未修改,客户端可以使用缓存的版本。
- 305 Use Proxy:请求必须通过代理访问。
- 306 Switch Proxy:已废弃,不再使用。
- 307 Temporary Redirect:请求的资源已临时移动到新的URL,但请求方法不变。
- 308 Permanent Redirect:请求的资源已永久移动到新的URL,但请求方法不变。
4. 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:请求需要指定内容长度。
- 412 Precondition Failed:请求的先决条件失败。
- 413 Payload Too Large:请求体过大。
- 414 URI Too Long:请求的URI过长。
- 415 Unsupported Media Type:请求的媒体类型不被支持。
- 416 Range Not Satisfiable:请求的范围无法满足。
- 417 Expectation Failed:请求的期望无法满足。
- 418 I’m a teapot:服务器是一个茶壶,无法泡咖啡(RFC 2324,幽默性质)。
- 421 Misdirected Request:请求被错误地发送到服务器。
- 422 Unprocessable Entity:请求无法处理(WebDAV扩展)。
- 423 Locked:请求的资源被锁定(WebDAV扩展)。
- 424 Failed Dependency:请求失败,因为依赖的资源失败(WebDAV扩展)。
- 425 Too Early:请求被拒绝,因为服务器尚未准备好。
- 426 Upgrade Required:请求需要升级到更高版本的协议。
- 428 Precondition Required:请求需要先决条件。
- 429 Too Many Requests:请求频率过高,被限制。
- 431 Request Header Fields Too Large:请求头字段过大。
- 451 Unavailable For Legal Reasons:请求的资源因法律原因不可用。
5. 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:服务器无法选择最佳的响应变体(WebDAV扩展)。
- 507 Insufficient Storage:服务器没有足够的存储空间(WebDAV扩展)。
- 508 Loop Detected:服务器检测到无限循环(WebDAV扩展)。
- 510 Not Extended:服务器需要扩展请求才能处理。
- 511 Network Authentication Required:客户端需要进行网络认证。
总结
HTTP状态码是HTTP协议中用于表示请求结果的重要机制。它们分为五个类别,每个类别代表不同类型的响应状态。了解这些状态码可以帮助开发者更好地调试和优化Web应用程序。
