HTTP 响应码分为五大类,每类都包含不同的状态码,表示服务器对客户端请求的响应。以下是所有标准 HTTP 响应码的详细列表:
1xx 信息性响应
1xx 响应码表示请求已被接收,客户端可以继续操作。这类响应码较少见,主要用于协议升级和长连接的情况。
状态码 | 描述 |
---|---|
100 | Continue:继续,客户端应继续发送请求的剩余部分。 |
101 | Switching Protocols:服务器同意切换协议。 |
102 | Processing:服务器已接收到并正在处理请求,但还没有响应可用(WebDAV)。 |
103 | Early Hints:提前返回响应头信息,帮助客户端预加载资源。 |
2xx 成功
2xx 响应码表示请求已经成功处理。服务器成功返回了请求的资源或者执行了请求的操作。
状态码 | 描述 |
---|---|
200 | OK:请求成功,服务器返回了请求的资源。 |
201 | Created:请求成功并且资源已被创建。 |
202 | Accepted:请求被接受,但尚未处理。 |
203 | Non-Authoritative Information:请求成功,但返回的信息可能来自第三方源。 |
204 | No Content:请求成功,但服务器没有返回任何内容。 |
205 | Reset Content:请求成功,服务器要求客户端重置视图。 |
206 | Partial Content:服务器成功处理了部分 GET 请求(用于分段下载)。 |
207 | Multi-Status:WebDAV 特有,表示多个状态码组合在一起。 |
208 | Already Reported:WebDAV 特有,避免重复枚举同一资源。 |
226 | IM Used:服务器已成功完成了 GET 请求,响应代表对资源的实例操作结果。 |
3xx 重定向
3xx 响应码表示客户端需要执行进一步的操作,通常是重定向到另一个 URL。
状态码 | 描述 |
---|---|
300 | Multiple Choices:请求有多个可能的响应,客户端应选择一个。 |
301 | Moved Permanently:资源已永久移动到新的 URL。 |
302 | Found:资源临时移动到新的 URL。 |
303 | See Other:请求的资源存在于另一个 URL,客户端应使用 GET 方法获取资源。 |
304 | Not Modified:未修改,客户端可以使用缓存。 |
305 | Use Proxy:请求必须通过代理访问。 |
306 | Switch Proxy:已废弃,不再使用。 |
307 | Temporary Redirect:临时重定向,要求客户端使用相同的 HTTP 方法。 |
308 | Permanent Redirect:永久重定向,要求客户端使用相同的 HTTP 方法。 |
4xx 客户端错误
4xx 响应码表示客户端发出的请求有问题,服务器无法处理该请求。这通常是由于请求格式错误、认证问题或资源不存在等原因。
状态码 | 描述 |
---|---|
400 | Bad Request:请求格式错误,服务器无法理解。 |
401 | Unauthorized:未授权,需要认证。 |
402 | Payment Required:保留状态码,最初打算用于数字支付场景。 |
403 | Forbidden:服务器拒绝执行请求。 |
404 | Not Found:请求的资源不存在。 |
405 | Method Not Allowed:请求使用的 HTTP 方法不被允许。 |
406 | Not Acceptable:请求的内容特性无法满足客户端的要求。 |
407 | Proxy Authentication Required:需要通过代理认证。 |
408 | Request Timeout:请求超时,服务器未能在期望的时间内收到请求。 |
409 | Conflict:请求与服务器的当前状态冲突。 |
410 | Gone:请求的资源已永久删除,不再可用。 |
411 | Length Required:服务器要求请求中包含 Content-Length 头。 |
412 | Precondition Failed:请求的前提条件失败。 |
413 | Payload Too Large:请求体过大,服务器无法处理。 |
414 | URI Too Long:请求的 URI 过长,服务器无法处理。 |
415 | Unsupported Media Type:请求的媒体类型不被服务器支持。 |
416 | Range Not Satisfiable:请求的范围无效。 |
417 | Expectation Failed:请求头中的 Expect 无法满足。 |
418 | I’m a teapot:这个状态码是一个愚人节玩笑,表示服务器拒绝冲泡咖啡,因为它是茶壶。 |
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:因法律原因不可用。 |
5xx 服务器错误
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)。 |
508 | Loop Detected:服务器检测到无限循环(WebDAV)。 |
510 | Not Extended:服务器要求客户端扩展请求以满足请求的要求。 |
511 | Network Authentication Required:客户端需要进行网络认证才能访问资源。 |
结论
HTTP 响应码是客户端和服务器之间的重要沟通机制,帮助客户端了解请求的处理结果。了解和正确使用这些响应码可以大大提高 Web 应用的健壮性和用户体验。
不同场景下,开发者应根据实际情况选择合适的 HTTP 状态码。例如:
- 成功的请求返回 200 OK;
- 资源不存在时使用 404 Not Found;
- 重定向请求时使用 301 Moved Permanently 或 302 Found;
- 服务器内部错误时返回 500 Internal Server Error。
合理使用这些状态码将有助于开发者编写出更可靠、用户友好并符合标准的 Web 应用。