源代码: 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
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>, ...]
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 |
REQUEST_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 |
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)。