17db96d56Sopenharmony_ci:mod:`http` --- HTTP modules
27db96d56Sopenharmony_ci============================
37db96d56Sopenharmony_ci
47db96d56Sopenharmony_ci.. module:: http
57db96d56Sopenharmony_ci   :synopsis: HTTP status codes and messages
67db96d56Sopenharmony_ci
77db96d56Sopenharmony_ci**Source code:** :source:`Lib/http/__init__.py`
87db96d56Sopenharmony_ci
97db96d56Sopenharmony_ci.. index::
107db96d56Sopenharmony_ci   pair: HTTP; protocol
117db96d56Sopenharmony_ci   single: HTTP; http (standard module)
127db96d56Sopenharmony_ci
137db96d56Sopenharmony_ci--------------
147db96d56Sopenharmony_ci
157db96d56Sopenharmony_ci:mod:`http` is a package that collects several modules for working with the
167db96d56Sopenharmony_ciHyperText Transfer Protocol:
177db96d56Sopenharmony_ci
187db96d56Sopenharmony_ci* :mod:`http.client` is a low-level HTTP protocol client; for high-level URL
197db96d56Sopenharmony_ci  opening use :mod:`urllib.request`
207db96d56Sopenharmony_ci* :mod:`http.server` contains basic HTTP server classes based on :mod:`socketserver`
217db96d56Sopenharmony_ci* :mod:`http.cookies` has utilities for implementing state management with cookies
227db96d56Sopenharmony_ci* :mod:`http.cookiejar` provides persistence of cookies
237db96d56Sopenharmony_ci
247db96d56Sopenharmony_ci
257db96d56Sopenharmony_ciThe :mod:`http` module also defines the following enums that help you work with http related code:
267db96d56Sopenharmony_ci
277db96d56Sopenharmony_ci.. class:: HTTPStatus
287db96d56Sopenharmony_ci
297db96d56Sopenharmony_ci   .. versionadded:: 3.5
307db96d56Sopenharmony_ci
317db96d56Sopenharmony_ci   A subclass of :class:`enum.IntEnum` that defines a set of HTTP status codes,
327db96d56Sopenharmony_ci   reason phrases and long descriptions written in English.
337db96d56Sopenharmony_ci
347db96d56Sopenharmony_ci   Usage::
357db96d56Sopenharmony_ci
367db96d56Sopenharmony_ci      >>> from http import HTTPStatus
377db96d56Sopenharmony_ci      >>> HTTPStatus.OK
387db96d56Sopenharmony_ci      HTTPStatus.OK
397db96d56Sopenharmony_ci      >>> HTTPStatus.OK == 200
407db96d56Sopenharmony_ci      True
417db96d56Sopenharmony_ci      >>> HTTPStatus.OK.value
427db96d56Sopenharmony_ci      200
437db96d56Sopenharmony_ci      >>> HTTPStatus.OK.phrase
447db96d56Sopenharmony_ci      'OK'
457db96d56Sopenharmony_ci      >>> HTTPStatus.OK.description
467db96d56Sopenharmony_ci      'Request fulfilled, document follows'
477db96d56Sopenharmony_ci      >>> list(HTTPStatus)
487db96d56Sopenharmony_ci      [HTTPStatus.CONTINUE, HTTPStatus.SWITCHING_PROTOCOLS, ...]
497db96d56Sopenharmony_ci
507db96d56Sopenharmony_ci.. _http-status-codes:
517db96d56Sopenharmony_ci
527db96d56Sopenharmony_ciHTTP status codes
537db96d56Sopenharmony_ci-----------------
547db96d56Sopenharmony_ci
557db96d56Sopenharmony_ciSupported,
567db96d56Sopenharmony_ci`IANA-registered status codes <https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml>`_
577db96d56Sopenharmony_ciavailable in :class:`http.HTTPStatus` are:
587db96d56Sopenharmony_ci
597db96d56Sopenharmony_ci======= =================================== ==================================================================
607db96d56Sopenharmony_ciCode    Enum Name                           Details
617db96d56Sopenharmony_ci======= =================================== ==================================================================
627db96d56Sopenharmony_ci``100`` ``CONTINUE``                        HTTP/1.1 :rfc:`7231`, Section 6.2.1
637db96d56Sopenharmony_ci``101`` ``SWITCHING_PROTOCOLS``             HTTP/1.1 :rfc:`7231`, Section 6.2.2
647db96d56Sopenharmony_ci``102`` ``PROCESSING``                      WebDAV :rfc:`2518`, Section 10.1
657db96d56Sopenharmony_ci``103`` ``EARLY_HINTS``                     An HTTP Status Code for Indicating Hints :rfc:`8297`
667db96d56Sopenharmony_ci``200`` ``OK``                              HTTP/1.1 :rfc:`7231`, Section 6.3.1
677db96d56Sopenharmony_ci``201`` ``CREATED``                         HTTP/1.1 :rfc:`7231`, Section 6.3.2
687db96d56Sopenharmony_ci``202`` ``ACCEPTED``                        HTTP/1.1 :rfc:`7231`, Section 6.3.3
697db96d56Sopenharmony_ci``203`` ``NON_AUTHORITATIVE_INFORMATION``   HTTP/1.1 :rfc:`7231`, Section 6.3.4
707db96d56Sopenharmony_ci``204`` ``NO_CONTENT``                      HTTP/1.1 :rfc:`7231`, Section 6.3.5
717db96d56Sopenharmony_ci``205`` ``RESET_CONTENT``                   HTTP/1.1 :rfc:`7231`, Section 6.3.6
727db96d56Sopenharmony_ci``206`` ``PARTIAL_CONTENT``                 HTTP/1.1 :rfc:`7233`, Section 4.1
737db96d56Sopenharmony_ci``207`` ``MULTI_STATUS``                    WebDAV :rfc:`4918`, Section 11.1
747db96d56Sopenharmony_ci``208`` ``ALREADY_REPORTED``                WebDAV Binding Extensions :rfc:`5842`, Section 7.1 (Experimental)
757db96d56Sopenharmony_ci``226`` ``IM_USED``                         Delta Encoding in HTTP :rfc:`3229`, Section 10.4.1
767db96d56Sopenharmony_ci``300`` ``MULTIPLE_CHOICES``                HTTP/1.1 :rfc:`7231`, Section 6.4.1
777db96d56Sopenharmony_ci``301`` ``MOVED_PERMANENTLY``               HTTP/1.1 :rfc:`7231`, Section 6.4.2
787db96d56Sopenharmony_ci``302`` ``FOUND``                           HTTP/1.1 :rfc:`7231`, Section 6.4.3
797db96d56Sopenharmony_ci``303`` ``SEE_OTHER``                       HTTP/1.1 :rfc:`7231`, Section 6.4.4
807db96d56Sopenharmony_ci``304`` ``NOT_MODIFIED``                    HTTP/1.1 :rfc:`7232`, Section 4.1
817db96d56Sopenharmony_ci``305`` ``USE_PROXY``                       HTTP/1.1 :rfc:`7231`, Section 6.4.5
827db96d56Sopenharmony_ci``307`` ``TEMPORARY_REDIRECT``              HTTP/1.1 :rfc:`7231`, Section 6.4.7
837db96d56Sopenharmony_ci``308`` ``PERMANENT_REDIRECT``              Permanent Redirect :rfc:`7238`, Section 3 (Experimental)
847db96d56Sopenharmony_ci``400`` ``BAD_REQUEST``                     HTTP/1.1 :rfc:`7231`, Section 6.5.1
857db96d56Sopenharmony_ci``401`` ``UNAUTHORIZED``                    HTTP/1.1 Authentication :rfc:`7235`, Section 3.1
867db96d56Sopenharmony_ci``402`` ``PAYMENT_REQUIRED``                HTTP/1.1 :rfc:`7231`, Section 6.5.2
877db96d56Sopenharmony_ci``403`` ``FORBIDDEN``                       HTTP/1.1 :rfc:`7231`, Section 6.5.3
887db96d56Sopenharmony_ci``404`` ``NOT_FOUND``                       HTTP/1.1 :rfc:`7231`, Section 6.5.4
897db96d56Sopenharmony_ci``405`` ``METHOD_NOT_ALLOWED``              HTTP/1.1 :rfc:`7231`, Section 6.5.5
907db96d56Sopenharmony_ci``406`` ``NOT_ACCEPTABLE``                  HTTP/1.1 :rfc:`7231`, Section 6.5.6
917db96d56Sopenharmony_ci``407`` ``PROXY_AUTHENTICATION_REQUIRED``   HTTP/1.1 Authentication :rfc:`7235`, Section 3.2
927db96d56Sopenharmony_ci``408`` ``REQUEST_TIMEOUT``                 HTTP/1.1 :rfc:`7231`, Section 6.5.7
937db96d56Sopenharmony_ci``409`` ``CONFLICT``                        HTTP/1.1 :rfc:`7231`, Section 6.5.8
947db96d56Sopenharmony_ci``410`` ``GONE``                            HTTP/1.1 :rfc:`7231`, Section 6.5.9
957db96d56Sopenharmony_ci``411`` ``LENGTH_REQUIRED``                 HTTP/1.1 :rfc:`7231`, Section 6.5.10
967db96d56Sopenharmony_ci``412`` ``PRECONDITION_FAILED``             HTTP/1.1 :rfc:`7232`, Section 4.2
977db96d56Sopenharmony_ci``413`` ``REQUEST_ENTITY_TOO_LARGE``        HTTP/1.1 :rfc:`7231`, Section 6.5.11
987db96d56Sopenharmony_ci``414`` ``REQUEST_URI_TOO_LONG``            HTTP/1.1 :rfc:`7231`, Section 6.5.12
997db96d56Sopenharmony_ci``415`` ``UNSUPPORTED_MEDIA_TYPE``          HTTP/1.1 :rfc:`7231`, Section 6.5.13
1007db96d56Sopenharmony_ci``416`` ``REQUESTED_RANGE_NOT_SATISFIABLE`` HTTP/1.1 Range Requests :rfc:`7233`, Section 4.4
1017db96d56Sopenharmony_ci``417`` ``EXPECTATION_FAILED``              HTTP/1.1 :rfc:`7231`, Section 6.5.14
1027db96d56Sopenharmony_ci``418`` ``IM_A_TEAPOT``                     HTCPCP/1.0 :rfc:`2324`, Section 2.3.2
1037db96d56Sopenharmony_ci``421`` ``MISDIRECTED_REQUEST``             HTTP/2 :rfc:`7540`, Section 9.1.2
1047db96d56Sopenharmony_ci``422`` ``UNPROCESSABLE_ENTITY``            WebDAV :rfc:`4918`, Section 11.2
1057db96d56Sopenharmony_ci``423`` ``LOCKED``                          WebDAV :rfc:`4918`, Section 11.3
1067db96d56Sopenharmony_ci``424`` ``FAILED_DEPENDENCY``               WebDAV :rfc:`4918`, Section 11.4
1077db96d56Sopenharmony_ci``425`` ``TOO_EARLY``                       Using Early Data in HTTP :rfc:`8470`
1087db96d56Sopenharmony_ci``426`` ``UPGRADE_REQUIRED``                HTTP/1.1 :rfc:`7231`, Section 6.5.15
1097db96d56Sopenharmony_ci``428`` ``PRECONDITION_REQUIRED``           Additional HTTP Status Codes :rfc:`6585`
1107db96d56Sopenharmony_ci``429`` ``TOO_MANY_REQUESTS``               Additional HTTP Status Codes :rfc:`6585`
1117db96d56Sopenharmony_ci``431`` ``REQUEST_HEADER_FIELDS_TOO_LARGE`` Additional HTTP Status Codes :rfc:`6585`
1127db96d56Sopenharmony_ci``451`` ``UNAVAILABLE_FOR_LEGAL_REASONS``   An HTTP Status Code to Report Legal Obstacles :rfc:`7725`
1137db96d56Sopenharmony_ci``500`` ``INTERNAL_SERVER_ERROR``           HTTP/1.1 :rfc:`7231`, Section 6.6.1
1147db96d56Sopenharmony_ci``501`` ``NOT_IMPLEMENTED``                 HTTP/1.1 :rfc:`7231`, Section 6.6.2
1157db96d56Sopenharmony_ci``502`` ``BAD_GATEWAY``                     HTTP/1.1 :rfc:`7231`, Section 6.6.3
1167db96d56Sopenharmony_ci``503`` ``SERVICE_UNAVAILABLE``             HTTP/1.1 :rfc:`7231`, Section 6.6.4
1177db96d56Sopenharmony_ci``504`` ``GATEWAY_TIMEOUT``                 HTTP/1.1 :rfc:`7231`, Section 6.6.5
1187db96d56Sopenharmony_ci``505`` ``HTTP_VERSION_NOT_SUPPORTED``      HTTP/1.1 :rfc:`7231`, Section 6.6.6
1197db96d56Sopenharmony_ci``506`` ``VARIANT_ALSO_NEGOTIATES``         Transparent Content Negotiation in HTTP :rfc:`2295`, Section 8.1 (Experimental)
1207db96d56Sopenharmony_ci``507`` ``INSUFFICIENT_STORAGE``            WebDAV :rfc:`4918`, Section 11.5
1217db96d56Sopenharmony_ci``508`` ``LOOP_DETECTED``                   WebDAV Binding Extensions :rfc:`5842`, Section 7.2 (Experimental)
1227db96d56Sopenharmony_ci``510`` ``NOT_EXTENDED``                    An HTTP Extension Framework :rfc:`2774`, Section 7 (Experimental)
1237db96d56Sopenharmony_ci``511`` ``NETWORK_AUTHENTICATION_REQUIRED`` Additional HTTP Status Codes :rfc:`6585`, Section 6
1247db96d56Sopenharmony_ci======= =================================== ==================================================================
1257db96d56Sopenharmony_ci
1267db96d56Sopenharmony_ciIn order to preserve backwards compatibility, enum values are also present
1277db96d56Sopenharmony_ciin the :mod:`http.client` module in the form of constants. The enum name is
1287db96d56Sopenharmony_ciequal to the constant name (i.e. ``http.HTTPStatus.OK`` is also available as
1297db96d56Sopenharmony_ci``http.client.OK``).
1307db96d56Sopenharmony_ci
1317db96d56Sopenharmony_ci.. versionchanged:: 3.7
1327db96d56Sopenharmony_ci   Added ``421 MISDIRECTED_REQUEST`` status code.
1337db96d56Sopenharmony_ci
1347db96d56Sopenharmony_ci.. versionadded:: 3.8
1357db96d56Sopenharmony_ci   Added ``451 UNAVAILABLE_FOR_LEGAL_REASONS`` status code.
1367db96d56Sopenharmony_ci
1377db96d56Sopenharmony_ci.. versionadded:: 3.9
1387db96d56Sopenharmony_ci   Added ``103 EARLY_HINTS``, ``418 IM_A_TEAPOT`` and ``425 TOO_EARLY`` status codes.
1397db96d56Sopenharmony_ci
1407db96d56Sopenharmony_ci.. class:: HTTPMethod
1417db96d56Sopenharmony_ci
1427db96d56Sopenharmony_ci   .. versionadded:: 3.11
1437db96d56Sopenharmony_ci
1447db96d56Sopenharmony_ci   A subclass of :class:`enum.StrEnum` that defines a set of HTTP methods and descriptions written in English.
1457db96d56Sopenharmony_ci
1467db96d56Sopenharmony_ci   Usage::
1477db96d56Sopenharmony_ci
1487db96d56Sopenharmony_ci      >>> from http import HTTPMethod
1497db96d56Sopenharmony_ci      >>>
1507db96d56Sopenharmony_ci      >>> HTTPMethod.GET
1517db96d56Sopenharmony_ci      <HTTPMethod.GET>
1527db96d56Sopenharmony_ci      >>> HTTPMethod.GET == 'GET'
1537db96d56Sopenharmony_ci      True
1547db96d56Sopenharmony_ci      >>> HTTPMethod.GET.value
1557db96d56Sopenharmony_ci      'GET'
1567db96d56Sopenharmony_ci      >>> HTTPMethod.GET.description
1577db96d56Sopenharmony_ci      'Retrieve the target.'
1587db96d56Sopenharmony_ci      >>> list(HTTPMethod)
1597db96d56Sopenharmony_ci      [<HTTPMethod.CONNECT>,
1607db96d56Sopenharmony_ci       <HTTPMethod.DELETE>,
1617db96d56Sopenharmony_ci       <HTTPMethod.GET>,
1627db96d56Sopenharmony_ci       <HTTPMethod.HEAD>,
1637db96d56Sopenharmony_ci       <HTTPMethod.OPTIONS>,
1647db96d56Sopenharmony_ci       <HTTPMethod.PATCH>,
1657db96d56Sopenharmony_ci       <HTTPMethod.POST>,
1667db96d56Sopenharmony_ci       <HTTPMethod.PUT>,
1677db96d56Sopenharmony_ci       <HTTPMethod.TRACE>]
1687db96d56Sopenharmony_ci
1697db96d56Sopenharmony_ci.. _http-methods:
1707db96d56Sopenharmony_ci
1717db96d56Sopenharmony_ciHTTP methods
1727db96d56Sopenharmony_ci-----------------
1737db96d56Sopenharmony_ci
1747db96d56Sopenharmony_ciSupported,
1757db96d56Sopenharmony_ci`IANA-registered methods <https://www.iana.org/assignments/http-methods/http-methods.xhtml>`_
1767db96d56Sopenharmony_ciavailable in :class:`http.HTTPMethod` are:
1777db96d56Sopenharmony_ci
1787db96d56Sopenharmony_ci=========== =================================== ==================================================================
1797db96d56Sopenharmony_ciMethod      Enum Name                           Details
1807db96d56Sopenharmony_ci=========== =================================== ==================================================================
1817db96d56Sopenharmony_ci``GET``     ``GET``                             HTTP/1.1 :rfc:`7231`, Section 4.3.1
1827db96d56Sopenharmony_ci``HEAD``    ``HEAD``                            HTTP/1.1 :rfc:`7231`, Section 4.3.2
1837db96d56Sopenharmony_ci``POST``    ``POST``                            HTTP/1.1 :rfc:`7231`, Section 4.3.3
1847db96d56Sopenharmony_ci``PUT``     ``PUT``                             HTTP/1.1 :rfc:`7231`, Section 4.3.4
1857db96d56Sopenharmony_ci``DELETE``  ``DELETE``                          HTTP/1.1 :rfc:`7231`, Section 4.3.5
1867db96d56Sopenharmony_ci``CONNECT`` ``CONNECT``                         HTTP/1.1 :rfc:`7231`, Section 4.3.6
1877db96d56Sopenharmony_ci``OPTIONS`` ``OPTIONS``                         HTTP/1.1 :rfc:`7231`, Section 4.3.7
1887db96d56Sopenharmony_ci``TRACE``   ``TRACE``                           HTTP/1.1 :rfc:`7231`, Section 4.3.8
1897db96d56Sopenharmony_ci``PATCH``   ``PATCH``                           HTTP/1.1 :rfc:`5789`
1907db96d56Sopenharmony_ci=========== =================================== ==================================================================
191