网络状态码

网络状态码

网络状态码(HTTP Status Codes)是服务器在响应客户端请求时返回的一个三位数字代码,用于表示请求的处理结果。这些状态码被分为几个类别,每个类别都有其特定的含义。以下是常见的网络状态码及其解释:

1xx - 信息性状态码

这些状态码表示临时的响应,服务器已收到请求,需要客户端继续执行操作。

  • 100 Continue:服务器已收到请求头,客户端应该继续发送请求体。
  • 101 Switching Protocols:服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到 HTTP/2。
  • 102 Processing:服务器已收到并正在处理请求,但无响应可用。客户端应继续发送请求体。

2xx - 成功状态码

这些状态码表示请求已成功处理。

  • 200 OK:请求成功,服务器返回了请求的资源。
  • 201 Created:请求成功,并且服务器创建了新的资源。通常用于 POST 请求。
  • 202 Accepted:请求已接受,但尚未处理。服务器承诺最终会处理该请求,但不确定何时完成。
  • 203 Non-Authoritative Information:服务器成功处理了请求,但返回的响应是来自另一个源的。
  • 204 No Content:请求成功,但没有内容返回。通常用于 DELETE 请求。
  • 205 Reset Content:服务器成功处理了请求,且没有返回任何内容,但建议客户端重置文档视图。
  • 206 Partial Content:服务器成功处理了部分 GET 请求。通常用于范围请求,如下载大文件时的断点续传。

3xx - 重定向状态码

这些状态码表示客户端需要采取进一步的操作才能完成请求,通常需要客户端重定向到另一个 URI。

  • 300 Multiple Choices:请求的资源有多个可用的表示形式,客户端可以选择其中一个。
  • 301 Moved Permanently:请求的资源已永久移动到新的 URI,客户端应使用新的 URI 重新发送请求。
  • 302 Found:请求的资源暂时移动到新的 URI,客户端应使用新的 URI 重新发送请求。
  • 303 See Other:请求的资源可以被另一个 URI 找到,客户端应使用 GET 方法访问新的 URI。
  • 304 Not Modified:请求的资源未修改,客户端可以使用缓存的版本。
  • 307 Temporary Redirect:请求的资源暂时移动到新的 URI,客户端应使用相同的方法和数据重新发送请求。
  • 308 Permanent Redirect:请求的资源已永久移动到新的 URI,客户端应使用相同的方法和数据重新发送请求。

4xx - 客户端错误状态码

这些状态码表示客户端的请求有语法错误或无法完成请求。

  • 400 Bad Request:请求有语法错误或请求参数无效。
  • 401 Unauthorized:请求未授权,客户端需要提供有效的认证信息。
  • 402 Payment Required:保留用于将来可能的支付系统。
  • 403 Forbidden:服务器拒绝执行请求,即使提供认证信息也无效。
  • 404 Not Found:请求的资源在服务器上未找到。
  • 405 Method Not Allowed:请求方法不被允许,例如,服务器只支持 GET 方法,但客户端使用了 POST 方法。
  • 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:服务器无法满足请求头中的 Expect 字段。
  • 422 Unprocessable Entity:请求被服务器正确解析,但包含无效的字段。
  • 429 Too Many Requests:客户端发送请求的频率过高,被服务器限制。
  • 431 Request Header Fields Too Large:请求头字段过大,服务器拒绝处理。

5xx - 服务器错误状态码

这些状态码表示服务器在处理请求时发生了错误。

  • 500 Internal Server Error:服务器内部错误,无法完成请求。
  • 501 Not Implemented:服务器不支持请求的功能。
  • 502 Bad Gateway:服务器作为网关或代理,从上游服务器收到无效响应。
  • 503 Service Unavailable:服务器暂时无法处理请求,通常由于服务器过载或维护。
  • 504 Gateway Timeout:服务器作为网关或代理,未在规定时间内从上游服务器收到响应。
  • 505 HTTP Version Not Supported:服务器不支持请求的 HTTP 版本。
  • 507 Insufficient Storage:服务器无法存储完成请求所必需的内容。
  • 508 Loop Detected:服务器检测到无限循环的请求。
  • 511 Network Authentication Required:客户端需要进行网络认证。

示例

假设你使用浏览器访问一个不存在的网页,服务器可能会返回 404 Not Found 状态码,表示请求的资源在服务器上未找到。浏览器会显示一个错误页面,提示用户资源未找到。

1
2
3
4
5
6
7
8
9
10
HTTP/1.1 404 Not Found
Content-Type: text/html; charset=UTF-8
Content-Length: 138
<html>
<head><title>404 Not Found</title></head>
<body>
<h1>404 Not Found</h1>
<p>The requested URL was not found on this server.</p>
</body>
</html>

通过这些状态码,客户端可以了解请求的处理结果,并采取相应的措施。