"http" --- HTTP 模块
********************

**源代码:** Lib/http/__init__.py

======================================================================

"http" 是一个包，它收集了多个用于处理超文本传输协议的模块:

* "http.client" 是一个低层级的 HTTP 协议客户端；对于高层级的 URL 访
  问 请使用 "urllib.request"

* "http.server" 包含基于 "socketserver" 的基本 HTTP 服务类

* "http.cookies" 包含一些有用来实现通过 cookies 进行状态管理的工具

* "http.cookiejar" 提供了 cookies 的持久化

"http" 也是一个通过 "http.HTTPStatus" 枚举定义了一些 HTTP 状态码以及相
关联消息的模块

class http.HTTPStatus

   3.5 新版功能.

   "enum.IntEnum" 的子类，它定义了组 HTTP 状态码，原理短语以及用英语书
   写的长描述文本。

   用法:

      >>> from http import HTTPStatus
      >>> HTTPStatus.OK
      <HTTPStatus.OK: 200>
      >>> HTTPStatus.OK == 200
      True
      >>> HTTPStatus.OK.value
      200
      >>> HTTPStatus.OK.phrase
      'OK'
      >>> HTTPStatus.OK.description
      'Request fulfilled, document follows'
      >>> list(HTTPStatus)
      [<HTTPStatus.CONTINUE: 100>, <HTTPStatus.SWITCHING_PROTOCOLS: 101>, ...]


HTTP 状态码
===========

已支持并且已在 "http.HTTPStatus" IANA 注册 的状态码有：

+---------+-------------------------------------+---------------------------------------------------------------------------------+
| 双字母  | 映射名                              | 详情                                                                            |
| 代码    |                                     |                                                                                 |
|=========|=====================================|=================================================================================|
| "100"   | "CONTINUE"：继续                    | HTTP/1.1 RFC 7231, Section 6.2.1                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "101"   | "SWITCHING_PROTOCOLS"               | HTTP/1.1 RFC 7231, Section 6.2.2                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "102"   | "PROCESSING"                        | WebDAV RFC 2518, Section 10.1                                                   |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "200"   | "OK"                                | HTTP/1.1 RFC 7231, Section 6.3.1                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "201"   | "CREATED"                           | HTTP/1.1 RFC 7231, Section 6.3.2                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "202"   | "ACCEPTED"                          | HTTP/1.1 RFC 7231, Section 6.3.3                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "203"   | "NON_AUTHORITATIVE_INFORMATION"     | HTTP/1.1 RFC 7231, Section 6.3.4                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "204"   | "NO_CONTENT": 没有内容              | HTTP/1.1 RFC 7231, Section 6.3.5                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "205"   | "RESET_CONTENT"                     | HTTP/1.1 RFC 7231, Section 6.3.6                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "206"   | "PARTIAL_CONTENT"                   | HTTP/1.1 RFC 7233, Section 4.1                                                  |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "207"   | "MULTI_STATUS"                      | WebDAV RFC 4918, Section 11.1                                                   |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "208"   | "ALREADY_REPORTED"                  | WebDAV Binding Extensions RFC 5842, Section 7.1 (Experimental)                  |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "226"   | "IM_USED"                           | Delta Encoding in HTTP RFC 3229, Section 10.4.1                                 |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "300"   | "MULTIPLE_CHOICES"：有多种资源可选  | HTTP/1.1 RFC 7231, Section 6.4.1                                                |
|         | 择                                  |                                                                                 |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "301"   | "MOVED_PERMANENTLY"：永久移动       | HTTP/1.1 RFC 7231, Section 6.4.2                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "302"   | "FOUND"：临时移动                   | HTTP/1.1 RFC 7231, Section 6.4.3                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "303"   | "SEE_OTHER"：已经移动               | HTTP/1.1 RFC 7231, Section 6.4.4                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "304"   | "NOT_MODIFIED"：没有修改            | HTTP/1.1 RFC 7232, Section 4.1                                                  |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "305"   | "USE_PROXY"：使用代理               | HTTP/1.1 RFC 7231, Section 6.4.5                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "307"   | "TEMPORARY_REDIRECT"：临时重定向    | HTTP/1.1 **RFC 7231**, Section 6.4.7                                            |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "308"   | "PERMANENT_REDIRECT"：永久重定向    | Permanent Redirect **RFC 7238**, Section 3 (Experimental)                       |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "400"   | "BAD_REQUEST"：错误请求             | HTTP/1.1 RFC 7231, Section 6.5.1                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "401"   | "UNAUTHORIZED"：未授权              | HTTP/1.1 Authentication RFC 7235, Section 3.1                                   |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "402"   | "PAYMENT_REQUIRED"：保留，将来使用  | HTTP/1.1 RFC 7231, Section 6.5.2                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "403"   | "FORBIDDEN"：禁止                   | HTTP/1.1 RFC 7231, Section 6.5.3                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "404"   | "NOT_FOUND"：没有找到               | HTTP/1.1 RFC 7231, Section 6.5.4                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "405"   | "METHOD_NOT_ALLOWED"：该请求方法不  | HTTP/1.1 RFC 7231, Section 6.5.5                                                |
|         | 允许                                |                                                                                 |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "406"   | "NOT_ACCEPTABLE"：不可接受          | HTTP/1.1 RFC 7231, Section 6.5.6                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "407"   | "PROXY_AUTHENTICATION_REQUIRED"：要 | HTTP/1.1 Authentication RFC 7235, Section 3.2                                   |
|         | 求使用代理验明正身                  |                                                                                 |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "408"   | "REQUEST_TIMEOUT"：请求超时         | HTTP/1.1 RFC 7231, Section 6.5.7                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "409"   | "CONFLICT"：冲突                    | HTTP/1.1 RFC 7231, Section 6.5.8                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "410"   | "GONE"：已经不在了                  | HTTP/1.1 RFC 7231, Section 6.5.9                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "411"   | "LENGTH_REQUIRED"：长度要求         | HTTP/1.1 RFC 7231, Section 6.5.10                                               |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "412"   | "PRECONDITION_FAILED"：前提条件错误 | HTTP/1.1 RFC 7232, Section 4.2                                                  |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "413"   | "REQUEST_ENTITY_TOO_LARGE"：请求体  | HTTP/1.1 RFC 7231, Section 6.5.11                                               |
|         | 太大了                              |                                                                                 |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "414"   | "REQUEST_URI_TOO_LONG"：请求URI太长 | HTTP/1.1 RFC 7231, Section 6.5.12                                               |
|         | 了                                  |                                                                                 |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "415"   | "UNSUPPORTED_MEDIA_TYPE"：不支持的  | HTTP/1.1 RFC 7231, Section 6.5.13                                               |
|         | 媒体格式                            |                                                                                 |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "416"   | "REQUESTED_RANGE_NOT_SATISFIABLE"   | HTTP/1.1 Range Requests RFC 7233, Section 4.4                                   |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "417"   | "EXPECTATION_FAILED"：期望失败      | HTTP/1.1 RFC 7231, Section 6.5.14                                               |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "421"   | "MISDIRECTED_REQUEST"               | HTTP/2 **RFC 7540**, Section 9.1.2                                              |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "422"   | "UNPROCESSABLE_ENTITY"：可加工实体  | WebDAV RFC 4918, Section 11.2                                                   |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "423"   | "LOCKED"：锁着                      | WebDAV RFC 4918, Section 11.3                                                   |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "424"   | "FAILED_DEPENDENCY"：失败的依赖     | WebDAV RFC 4918, Section 11.4                                                   |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "426"   | "UPGRADE_REQUIRED"：升级需要        | HTTP/1.1 RFC 7231, Section 6.5.15                                               |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "428"   | "PRECONDITION_REQUIRED"：先决条件要 | Additional HTTP Status Codes RFC 6585                                           |
|         | 求                                  |                                                                                 |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "429"   | "TOO_MANY_REQUESTS"：太多的请求     | Additional HTTP Status Codes RFC 6585                                           |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "431"   | "REQUEST_HEADER_FIELDS_TOO_LARGE"： | Additional HTTP Status Codes RFC 6585                                           |
|         | 请求头太大                          |                                                                                 |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "500"   | "INTERNAL_SERVER_ERROR"：内部服务错 | HTTP/1.1 RFC 7231, Section 6.6.1                                                |
|         | 误                                  |                                                                                 |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "501"   | "NOT_IMPLEMENTED"：不可执行         | HTTP/1.1 RFC 7231, Section 6.6.2                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "502"   | "BAD_GATEWAY"：无效网关             | HTTP/1.1 RFC 7231, Section 6.6.3                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "503"   | "SERVICE_UNAVAILABLE"：服务不可用   | HTTP/1.1 RFC 7231, Section 6.6.4                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "504"   | "GATEWAY_TIMEOUT"：网关超时         | HTTP/1.1 RFC 7231, Section 6.6.5                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "505"   | "HTTP_VERSION_NOT_SUPPORTED"：HTTP  | HTTP/1.1 RFC 7231, Section 6.6.6                                                |
|         | 版本不支持                          |                                                                                 |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "506"   | "VARIANT_ALSO_NEGOTIATES"：服务器存 | 透明内容协商在： HTTP **RFC 2295**, Section 8.1 (实验性的)                      |
|         | 在内部配置错误                      |                                                                                 |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "507"   | "INSUFFICIENT_STORAGE"：存储不足    | WebDAV RFC 4918, Section 11.5                                                   |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "508"   | "LOOP_DETECTED"：循环检测           | WebDAV Binding Extensions RFC 5842, Section 7.2 (Experimental)                  |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "510"   | "NOT_EXTENDED"：不扩展              | An HTTP Extension Framework **RFC 2774**, Section 7 (Experimental)              |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "511"   | "NETWORK_AUTHENTICATION_REQUIRED"： | Additional HTTP Status Codes **RFC 6585**, Section 6                            |
|         | 要求网络身份验证                    |                                                                                 |
+---------+-------------------------------------+---------------------------------------------------------------------------------+

为了保持向后兼容性，枚举值也以常量形式出现在 "http.client" 模块中，。
枚举名等于常量名 (例如 "http.HTTPStatus.OK" 也可以是 "http.client.OK")
。

在 3.7 版更改: 添加了 "421 MISDIRECTED_REQUEST" 状态码。
