http.md · Markdown – Документация Python
Документация Python неофициальный перевод

http.md

195 строк · 16.3 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.15/library/http.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `http` – модули HTTP89**Исходный код:** [Lib/http/\_\_init\_\_.py](https://python-all.ru/src/3.15/Lib/http/__init__.py)1011---1213`http` – пакет, объединяющий несколько модулей для работы с протоколом передачи гипертекста (HTTP):1415- [`http.client`](https://python-all.ru/3.15/library/http.client.html#module-http.client) – низкоуровневый клиент протокола HTTP; для открытия URL на высоком уровне используйте [`urllib.request`](https://python-all.ru/3.15/library/urllib.request.html#module-urllib.request)16- [`http.server`](https://python-all.ru/3.15/library/http.server.html#module-http.server) содержит базовые классы HTTP-сервера на основе [`socketserver`](https://python-all.ru/3.15/library/socketserver.html#module-socketserver)17- [`http.cookies`](https://python-all.ru/3.15/library/http.cookies.html#module-http.cookies) содержит утилиты для реализации управления состоянием с помощью куки18- [`http.cookiejar`](https://python-all.ru/3.15/library/http.cookiejar.html#module-http.cookiejar) обеспечивает сохранение куки1920Модуль `http` также определяет следующие перечисления, которые помогают работать с кодом, связанным с HTTP:2122#### `class http.HTTPStatus`2324Добавлено в версии 3.5.2526Подкласс [`enum.IntEnum`](https://python-all.ru/3.15/library/enum.html#enum.IntEnum), определяющий набор HTTP-статусов, поясняющих фраз и подробных описаний на английском языке.2728Использование:2930```python31>>> from http import HTTPStatus32>>> HTTPStatus.OK33HTTPStatus.OK34>>> HTTPStatus.OK == 20035True36>>> HTTPStatus.OK.value3720038>>> HTTPStatus.OK.phrase39'OK'40>>> HTTPStatus.OK.description41'Request fulfilled, document follows'42>>> list(HTTPStatus)43[HTTPStatus.CONTINUE, HTTPStatus.SWITCHING_PROTOCOLS, ...]44```4546## Коды состояния HTTP4748Поддерживаемые [зарегистрированные IANA коды состояния](https://python-all.ru/3.15/library/http.html), доступные в [`http.HTTPStatus`](https://python-all.ru/3.15/library/http.html#http.HTTPStatus):4950| Код | Имя перечисления | Подробности |51| --- | --- | --- |52| `100` | `CONTINUE` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15.2.1 |53| `101` | `SWITCHING_PROTOCOLS` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15.2.2 |54| `102` | `PROCESSING` | WebDAV [**RFC 2518**](https://python-all.ru/3.15/library/http.html), раздел 10.1 |55| `103` | `EARLY_HINTS` | Код состояния HTTP для указания подсказок [**RFC 8297**](https://python-all.ru/3.15/library/http.html) |56| `200` | `OK` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15.3.1 |57| `201` | `CREATED` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15.3.2 |58| `202` | `ACCEPTED` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15.3.3 |59| `203` | `NON_AUTHORITATIVE_INFORMATION` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15.3.4 |60| `204` | `NO_CONTENT` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15.3.5 |61| `205` | `RESET_CONTENT` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15.3.6 |62| `206` | `PARTIAL_CONTENT` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15.3.7 |63| `207` | `MULTI_STATUS` | WebDAV [**RFC 4918**](https://python-all.ru/3.15/library/http.html), раздел 11.1 |64| `208` | `ALREADY_REPORTED` | Расширения привязки WebDAV [**RFC 5842**](https://python-all.ru/3.15/library/http.html), раздел 7.1 (экспериментальный) |65| `226` | `IM_USED` | Дельта-кодирование в HTTP [**RFC 3229**](https://python-all.ru/3.15/library/http.html), раздел 10.4.1 |66| `300` | `MULTIPLE_CHOICES` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15.4.1 |67| `301` | `MOVED_PERMANENTLY` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15.4.2 |68| `302` | `FOUND` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15.4.3 |69| `303` | `SEE_OTHER` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.4.4 |70| `304` | `NOT_MODIFIED` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.4.5 |71| `305` | `USE_PROXY` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.4.6 |72| `307` | `TEMPORARY_REDIRECT` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.4.8 |73| `308` | `PERMANENT_REDIRECT` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.4.9 |74| `400` | `BAD_REQUEST` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.1 |75| `401` | `UNAUTHORIZED` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.2 |76| `402` | `PAYMENT_REQUIRED` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.3 |77| `403` | `FORBIDDEN` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.4 |78| `404` | `NOT_FOUND` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.5 |79| `405` | `METHOD_NOT_ALLOWED` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.6 |80| `406` | `NOT_ACCEPTABLE` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.7 |81| `407` | `PROXY_AUTHENTICATION_REQUIRED` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.8 |82| `408` | `REQUEST_TIMEOUT` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.9 |83| `409` | `CONFLICT` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.10 |84| `410` | `GONE` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.11 |85| `411` | `LENGTH_REQUIRED` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.12 |86| `412` | `PRECONDITION_FAILED` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.13 |87| `413` | `CONTENT_TOO_LARGE` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.14 |88| `414` | `URI_TOO_LONG` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.15 |89| `415` | `UNSUPPORTED_MEDIA_TYPE` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.16 |90| `416` | `RANGE_NOT_SATISFIABLE` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.17 |91| `417` | `EXPECTATION_FAILED` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.18 |92| `418` | `IM_A_TEAPOT` | HTCPCP/1.0 [**RFC 2324**](https://python-all.ru/3.15/library/http.html), Раздел 2.3.2 |93| `421` | `MISDIRECTED_REQUEST` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.20 |94| `422` | `UNPROCESSABLE_CONTENT` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.21 |95| `423` | `LOCKED` | WebDAV [**RFC 4918**](https://python-all.ru/3.15/library/http.html), Раздел 11.3 |96| `424` | `FAILED_DEPENDENCY` | WebDAV [**RFC 4918**](https://python-all.ru/3.15/library/http.html), Раздел 11.4 |97| `425` | `TOO_EARLY` | Использование ранних данных в HTTP [**RFC 8470**](https://python-all.ru/3.15/library/http.html) |98| `426` | `UPGRADE_REQUIRED` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), Раздел 15.5.22 |99| `428` | `PRECONDITION_REQUIRED` | Дополнительные коды состояния HTTP [**RFC 6585**](https://python-all.ru/3.15/library/http.html) |100| `429` | `TOO_MANY_REQUESTS` | Дополнительные коды состояния HTTP [**RFC 6585**](https://python-all.ru/3.15/library/http.html) |101| `431` | `REQUEST_HEADER_FIELDS_TOO_LARGE` | Дополнительные коды состояния HTTP [**RFC 6585**](https://python-all.ru/3.15/library/http.html) |102| `451` | `UNAVAILABLE_FOR_LEGAL_REASONS` | Код состояния HTTP для сообщения о юридических препятствиях [**RFC 7725**](https://python-all.ru/3.15/library/http.html) |103| `500` | `INTERNAL_SERVER_ERROR` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15.6.1 |104| `501` | `NOT_IMPLEMENTED` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15.6.2 |105| `502` | `BAD_GATEWAY` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15.6.3 |106| `503` | `SERVICE_UNAVAILABLE` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15.6.4 |107| `504` | `GATEWAY_TIMEOUT` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15.6.5 |108| `505` | `HTTP_VERSION_NOT_SUPPORTED` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15.6.6 |109| `506` | `VARIANT_ALSO_NEGOTIATES` | Прозрачное согласование содержимого в HTTP [**RFC 2295**](https://python-all.ru/3.15/library/http.html), раздел 8.1 (экспериментальный) |110| `507` | `INSUFFICIENT_STORAGE` | WebDAV [**RFC 4918**](https://python-all.ru/3.15/library/http.html), раздел 11.5 |111| `508` | `LOOP_DETECTED` | Расширения привязки WebDAV [**RFC 5842**](https://python-all.ru/3.15/library/http.html), раздел 7.2 (экспериментальный) |112| `510` | `NOT_EXTENDED` | Расширяемая структура HTTP [**RFC 2774**](https://python-all.ru/3.15/library/http.html), раздел 7 (экспериментальный) |113| `511` | `NETWORK_AUTHENTICATION_REQUIRED` | Дополнительные коды состояния HTTP [**RFC 6585**](https://python-all.ru/3.15/library/http.html), раздел 6 |114115Для сохранения обратной совместимости значения перечисления также присутствуют в модуле [`http.client`](https://python-all.ru/3.15/library/http.client.html#module-http.client) в виде констант. Имя перечисления совпадает с именем константы (т.е. `http.HTTPStatus.OK` также доступно как `http.client.OK`).116117Изменено в версии 3.7: Добавлен код состояния `421 MISDIRECTED_REQUEST`.118119Добавлено в версии 3.8: Добавлен код состояния `451 UNAVAILABLE_FOR_LEGAL_REASONS`.120121Добавлено в версии 3.9: Добавлены коды состояния `103 EARLY_HINTS`, `418 IM_A_TEAPOT` и `425 TOO_EARLY`.122123Изменено в версии 3.13: Реализована номенклатура RFC9110 для констант состояния. Старые имена констант сохранены для обратной совместимости: `413 REQUEST_ENTITY_TOO_LARGE`, `414 REQUEST_URI_TOO_LONG`, `416 REQUESTED_RANGE_NOT_SATISFIABLE` и `422 UNPROCESSABLE_ENTITY`.124125## Категория состояния HTTP126127Добавлено в версии 3.12.128129Значения перечисления имеют несколько свойств, указывающих категорию состояния HTTP:130131| Свойство | Указывает, что | Подробности |132| --- | --- | --- |133| `is_informational` | `100 <= status <= 199` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15 |134| `is_success` | `200 <= status <= 299` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15 |135| `is_redirection` | `300 <= status <= 399` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15 |136| `is_client_error` | `400 <= status <= 499` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15 |137| `is_server_error` | `500 <= status <= 599` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 15 |138139> Использование:140>141> ```python142> >>> from http import HTTPStatus143> >>> HTTPStatus.OK.is_success144> True145> >>> HTTPStatus.OK.is_client_error146> False147> ```148149#### `class http.HTTPMethod`150151Добавлено в версии 3.12.152153Подкласс [`enum.StrEnum`](https://python-all.ru/3.15/library/enum.html#enum.StrEnum), определяющий набор HTTP-методов и описаний на английском языке.154155Использование:156157```python158>>> from http import HTTPMethod159>>>160>>> HTTPMethod.GET161<HTTPMethod.GET>162>>> HTTPMethod.GET == 'GET'163True164>>> HTTPMethod.GET.value165'GET'166>>> HTTPMethod.GET.description167'Retrieve the target.'168>>> list(HTTPMethod)169[<HTTPMethod.CONNECT>,170 <HTTPMethod.DELETE>,171 <HTTPMethod.GET>,172 <HTTPMethod.HEAD>,173 <HTTPMethod.OPTIONS>,174 <HTTPMethod.PATCH>,175 <HTTPMethod.POST>,176 <HTTPMethod.PUT>,177 <HTTPMethod.TRACE>]178```179180## Методы HTTP181182Поддерживаемые, [зарегистрированные в IANA методы](https://python-all.ru/3.15/library/http.html) доступные в [`http.HTTPMethod`](https://python-all.ru/3.15/library/http.html#http.HTTPMethod):183184| Метод | Имя перечисления | Подробности |185| --- | --- | --- |186| `GET` | `GET` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 9.3.1 |187| `HEAD` | `HEAD` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 9.3.2 |188| `POST` | `POST` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 9.3.3 |189| `PUT` | `PUT` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 9.3.4 |190| `DELETE` | `DELETE` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 9.3.5 |191| `CONNECT` | `CONNECT` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 9.3.6 |192| `OPTIONS` | `OPTIONS` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 9.3.7 |193| `TRACE` | `TRACE` | Семантика HTTP [**RFC 9110**](https://python-all.ru/3.15/library/http.html), раздел 9.3.8 |194| `PATCH` | `PATCH` | HTTP/1.1 [**RFC 5789**](https://python-all.ru/3.15/library/http.html) |195