http — HTTP модули


http — пакет, который объединяет несколько модулей для работы с протоколом передачи гипертекста:

  • http.client — клиент протокола HTTP низкого уровня; для открытия URL- адреса высокого уровня используйте urllib.request
  • http.server содержит базовые классы HTTP-серверов на основе socketserver
  • http.cookies имеет утилиты для реализации управления состоянием с помощью cookie
  • http.cookiejar обеспечивает сохранение cookie

http также является модулем, который определяет ряд кодов состояния HTTP и связанных сообщений через перечисление http.HTTPStatus:

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

Поддерживаются коды состояния IANA-registered, доступные в http.HTTPStatus:

Код Перечисление имён Подробности
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 REQUESTED_RANGE_NOT_SATISFIABLE HTTP/1.1 Диапазон запросов RFC 7233, Раздел 4.4
417 EXPECTATION_FAILED HTTP/1.1 RFC 7231, Раздел 6.5.14
421 MISDIRECTED_REQUEST HTTP/2 RFC 7540, Раздел 9.1.2
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
451 UNAVAILABLE_FOR_LEGAL_REASONS Код состояния HTTP для сообщения о юридических препятствиях RFC 7725
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).

Изменено в версии 3.7: Добавлен код состояния 421 MISDIRECTED_REQUEST.

Добавлено в версии 3.8: Добавлен код состояния 451 UNAVAILABLE_FOR_LEGAL_REASONS.