21.11. http
— HTTP模块¶
http
包用于处理超文本传输协议,包括下面几个模块:
http.client
是低级别的HTTP协议客户端,对于高级别的URL开发请参考urllib.request
。http.server
包含基于socketserver
的基本HTTP服务类。http.cookies
用于实现cookie状态管理。http.cookiejar
提供持久化cookie。
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 >>> http.HTTPStatus.OK.value 200 >>> HTTPStatus.OK.phrase 'OK' >>> HTTPStatus.OK.description 'Request fulfilled, document follows' >>> list(HTTPStatus) [<HTTPStatus.CONTINUE: 100>, <HTTPStatus.SWITCHING_PROTOCOLS: 101>, ...]
21.11.1. HTTP状态码¶
http.HTTPStatus
中支持的状态码列表如下: (都已注册IANA,参考:IANA-registered)
码 | 枚举名称 | 细节 |
---|---|---|
100 | CONTINUE | HTTP / 1.1 RFC 7231,第6.2.1节 |
101 | SWITCHING_PROTOCOLS | HTTP / 1.1 RFC 7231,第6.2.2节 |
102 | PROCESSING | WebDAV RFC 2518,第10.1节 |
200 | OK | HTTP / 1.1 RFC 7231,第6.3.1节 |
201 | CREATED | HTTP / 1.1 RFC 7231,第6.3.2节 |
202 | ACCEPTED | HTTP / 1.1 RFC 7231,第6.3.3节 |
203 | NON_AUTHORITATIVE_INFORMATION | HTTP / 1.1 RFC 7231,第6.3.4节 |
204 | NO_CONTENT | HTTP / 1.1 RFC 7231,第6.3.5节 |
205 | RESET_CONTENT | HTTP / 1.1 RFC 7231,第6.3.6节 |
206 | PARTIAL_CONTENT | HTTP / 1.1 RFC 7233,第4.1节 |
207 | MULTI_STATUS | WebDAV RFC 4918,第11.1节 |
208 | ALREADY_REPORTED | WebDAV绑定扩展 RFC 5842,第7.1节(实验) |
226 | IM_USED | HTTP中的增量编码 RFC 3229,第10.4.1节 |
300 | MULTIPLE_CHOICES | HTTP / 1.1 RFC 7231,第6.4.1节 |
301 | MOVED_PERMANENTLY | HTTP / 1.1 RFC 7231,第6.4.2节 |
302 | FOUND | HTTP / 1.1 RFC 7231,第6.4.3节 |
303 | SEE_OTHER | HTTP / 1.1 RFC 7231,第6.4.4节 |
304 | NOT_MODIFIED | HTTP / 1.1 RFC 7232,第4.1节 |
305 | USE_PROXY | HTTP / 1.1 RFC 7231,第6.4.5节 |
307 | TEMPORARY_REDIRECT | HTTP / 1.1 RFC 7231,第6.4.7节 |
308 | PERMANENT_REDIRECT | 永久重定向 RFC 7238,第3节(实验) |
400 | BAD_REQUEST | HTTP / 1.1 RFC 7231,第6.5.1节 |
401 | UNAUTHORIZED | HTTP / 1.1认证 RFC 7235,第3.1节 |
402 | PAYMENT_REQUIRED | HTTP / 1.1 RFC 7231,第6.5.2节 |
403 | FORBIDDEN | HTTP / 1.1 RFC 7231,第6.5.3节 |
404 | NOT_FOUND | HTTP / 1.1 RFC 7231,第6.5.4节 |
405 | METHOD_NOT_ALLOWED | HTTP / 1.1 RFC 7231,第6.5.5节 |
406 | NOT_ACCEPTABLE | HTTP / 1.1 RFC 7231,第6.5.6节 |
407 | PROXY_AUTHENTICATION_REQUIRED | HTTP / 1.1认证 RFC 7235,第3.2节 |
408 | REQUEST_TIMEOUT | HTTP / 1.1 RFC 7231,第6.5.7节 |
409 | CONFLICT | HTTP / 1.1 RFC 7231,第6.5.8节 |
410 | GONE | HTTP / 1.1 RFC 7231,第6.5.9节 |
411 | LENGTH_REQUIRED | HTTP / 1.1 RFC 7231,第6.5.10节 |
412 | PRECONDITION_FAILED | HTTP / 1.1 RFC 7232,第4.2节 |
413 | REQUEST_ENTITY_TOO_LARGE | HTTP / 1.1 RFC 7231,第6.5.11节 |
414 | REQUEST_URI_TOO_LONG | HTTP / 1.1 RFC 7231,第6.5.12节 |
415 | UNSUPPORTED_MEDIA_TYPE | HTTP / 1.1 RFC 7231,第6.5.13节 |
416 | REQUEST_RANGE_NOT_SATISFIABLE | HTTP / 1.1范围请求 RFC 7233,第4.4节 |
417 | EXPECTATION_FAILED | HTTP / 1.1 RFC 7231,第6.5.14节 |
422 | UNPROCESSABLE_ENTITY | WebDAV RFC 4918,第11.2节 |
423 | LOCKED | WebDAV RFC 4918,第11.3节 |
424 | FAILED_DEPENDENCY | WebDAV RFC 4918,第11.4节 |
426 | UPGRADE_REQUIRED | HTTP / 1.1 RFC 7231,第6.5.15节 |
428 | PRECONDITION_REQUIRED | 其他HTTP状态码 RFC 6585 |
429 | TOO_MANY_REQUESTS | 其他HTTP状态码 RFC 6585 |
431 | REQUEST_HEADER_FIELDS_TOO_LARGE | 其他HTTP状态码 RFC 6585 |
500 | INTERNAL_SERVER_ERROR | HTTP / 1.1 RFC 7231,第6.6.1节 |
501 | NOT_IMPLEMENTED | HTTP / 1.1 RFC 7231,第6.6.2节 |
502 | BAD_GATEWAY | HTTP / 1.1 RFC 7231,第6.6.3节 |
503 | SERVICE_UNAVAILABLE | HTTP / 1.1 RFC 7231,第6.6.4节 |
504 | GATEWAY_TIMEOUT | HTTP / 1.1 RFC 7231,第6.6.5节 |
505 | HTTP_VERSION_NOT_SUPPORTED | HTTP / 1.1 RFC 7231,第6.6.6节 |
506 | VARIANT_ALSO_NEGOTIATES | HTTP中的透明内容协商 RFC 2295,第8.1节(实验) |
507 | INSUFFICIENT_STORAGE | WebDAV RFC 4918,第11.5节 |
508 | LOOP_DETECTED | WebDAV绑定扩展 RFC 5842,第7.2节(实验) |
510 | NOT_EXTENDED | HTTP扩展框架 RFC 2774,第7节(实验) |
511 | NETWORK_AUTHENTICATION_REQUIRED | 其他HTTP状态代码 RFC 6585,第6节 |
为了保持向下兼容性,枚举值也以常量形式存在于http.client
模块中。枚举名称就等于常量的名称。比如:http.HTTPStatus.OK
就等于 http.client.OK
。