HTTP 响应码分为五大类,每类都包含不同的状态码,表示服务器对客户端请求的响应。以下是所有标准 HTTP 响应码的详细列表:

1xx 信息性响应

1xx 响应码表示请求已被接收,客户端可以继续操作。这类响应码较少见,主要用于协议升级和长连接的情况。

状态码描述
100Continue:继续,客户端应继续发送请求的剩余部分。
101Switching Protocols:服务器同意切换协议。
102Processing:服务器已接收到并正在处理请求,但还没有响应可用(WebDAV)。
103Early Hints:提前返回响应头信息,帮助客户端预加载资源。

2xx 成功

2xx 响应码表示请求已经成功处理。服务器成功返回了请求的资源或者执行了请求的操作。

状态码描述
200OK:请求成功,服务器返回了请求的资源。
201Created:请求成功并且资源已被创建。
202Accepted:请求被接受,但尚未处理。
203Non-Authoritative Information:请求成功,但返回的信息可能来自第三方源。
204No Content:请求成功,但服务器没有返回任何内容。
205Reset Content:请求成功,服务器要求客户端重置视图。
206Partial Content:服务器成功处理了部分 GET 请求(用于分段下载)。
207Multi-Status:WebDAV 特有,表示多个状态码组合在一起。
208Already Reported:WebDAV 特有,避免重复枚举同一资源。
226IM Used:服务器已成功完成了 GET 请求,响应代表对资源的实例操作结果。

3xx 重定向

3xx 响应码表示客户端需要执行进一步的操作,通常是重定向到另一个 URL。

状态码描述
300Multiple Choices:请求有多个可能的响应,客户端应选择一个。
301Moved Permanently:资源已永久移动到新的 URL。
302Found:资源临时移动到新的 URL。
303See Other:请求的资源存在于另一个 URL,客户端应使用 GET 方法获取资源。
304Not Modified:未修改,客户端可以使用缓存。
305Use Proxy:请求必须通过代理访问。
306Switch Proxy:已废弃,不再使用。
307Temporary Redirect:临时重定向,要求客户端使用相同的 HTTP 方法。
308Permanent Redirect:永久重定向,要求客户端使用相同的 HTTP 方法。

4xx 客户端错误

4xx 响应码表示客户端发出的请求有问题,服务器无法处理该请求。这通常是由于请求格式错误、认证问题或资源不存在等原因。

状态码描述
400Bad Request:请求格式错误,服务器无法理解。
401Unauthorized:未授权,需要认证。
402Payment Required:保留状态码,最初打算用于数字支付场景。
403Forbidden:服务器拒绝执行请求。
404Not Found:请求的资源不存在。
405Method Not Allowed:请求使用的 HTTP 方法不被允许。
406Not Acceptable:请求的内容特性无法满足客户端的要求。
407Proxy Authentication Required:需要通过代理认证。
408Request Timeout:请求超时,服务器未能在期望的时间内收到请求。
409Conflict:请求与服务器的当前状态冲突。
410Gone:请求的资源已永久删除,不再可用。
411Length Required:服务器要求请求中包含 Content-Length 头。
412Precondition Failed:请求的前提条件失败。
413Payload Too Large:请求体过大,服务器无法处理。
414URI Too Long:请求的 URI 过长,服务器无法处理。
415Unsupported Media Type:请求的媒体类型不被服务器支持。
416Range Not Satisfiable:请求的范围无效。
417Expectation Failed:请求头中的 Expect 无法满足。
418I’m a teapot:这个状态码是一个愚人节玩笑,表示服务器拒绝冲泡咖啡,因为它是茶壶。
421Misdirected Request:请求被定向到错误的服务器。
422Unprocessable Entity:服务器理解请求,但由于语义错误而无法处理(WebDAV)。
423Locked:资源被锁定(WebDAV)。
424Failed Dependency:由于之前的请求失败,当前请求也无法执行(WebDAV)。
425Too Early:服务器不愿意处理可能重放的请求。
426Upgrade Required:客户端应切换到其他协议。
428Precondition Required:服务器要求请求满足前提条件。
429Too Many Requests:客户端发送了太多请求。
431Request Header Fields Too Large:请求头字段太大,服务器无法处理。
451Unavailable For Legal Reasons:因法律原因不可用。

5xx 服务器错误

5xx 响应码表示服务器在处理请求时发生了错误。这个错误通常是由服务器端的问题引起的。

状态码描述
500Internal Server Error:服务器内部错误,无法完成请求。
501Not Implemented:服务器不支持请求的方法或功能。
502Bad Gateway:服务器作为网关或代理时,从上游服务器接收到无效响应。
503Service Unavailable:服务器暂时无法处理请求,通常是由于服务器过载或维护。
504Gateway Timeout:服务器作为网关或代理时,未能及时从上游服务器获得响应。
505HTTP Version Not Supported:服务器不支持请求的 HTTP 版本。
506Variant Also Negotiates:服务器内部配置错误,导致内容协商环路。
507Insufficient Storage:服务器无法存储请求所需的内容(WebDAV)。
508Loop Detected:服务器检测到无限循环(WebDAV)。
510Not Extended:服务器要求客户端扩展请求以满足请求的要求。
511Network Authentication Required:客户端需要进行网络认证才能访问资源。

结论

HTTP 响应码是客户端和服务器之间的重要沟通机制,帮助客户端了解请求的处理结果。了解和正确使用这些响应码可以大大提高 Web 应用的健壮性和用户体验。

不同场景下,开发者应根据实际情况选择合适的 HTTP 状态码。例如:

  • 成功的请求返回 200 OK;
  • 资源不存在时使用 404 Not Found;
  • 重定向请求时使用 301 Moved Permanently 或 302 Found;
  • 服务器内部错误时返回 500 Internal Server Error。

合理使用这些状态码将有助于开发者编写出更可靠、用户友好并符合标准的 Web 应用。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注