Python Glossary English

все Python 3http.clientпонятие

http.client.HTTPSConnection

соединения

HTTP-соединение поверх TLS: то же, что HTTPConnection, но порт по умолчанию 443 и трафик шифруется. Настройки TLS задаются параметром context.

Синтаксис

conn = http.client.HTTPSConnection(host, port=None, *, timeout=..., context=None)

С 3.4.3 сертификат и имя хоста проверяются по умолчанию, и самоподписанный сертификат даёт ssl.SSLCertVerificationError — отключать проверку вместо добавления своего CA в ssl.create_default_context(cafile=...) опасно. Параметры key_file, cert_file и check_hostname удалены в 3.12: старый код получает TypeError, клиентский сертификат теперь грузят в context.load_cert_chain(). Как и у HTTPConnection, конструктор в сеть не ходит — рукопожатие TLS идёт при первом request().

Примеры

import http.client
import ssl
conn = http.client.HTTPSConnection('example.com', timeout=5)
print(conn.port, isinstance(conn, http.client.HTTPConnection))  # → 443 True
ctx = ssl.create_default_context()
print(ctx.verify_mode == ssl.CERT_REQUIRED, ctx.check_hostname)  # → True True
conn = http.client.HTTPSConnection('example.com', context=ctx)
print(conn.sock)  # → None — рукопожатие будет при первом request()
# Python 3.12+
import http.client
try:
    http.client.HTTPSConnection('example.com', check_hostname=False)
except TypeError as e:
    print('check_hostname' in str(e))  # → True — параметр удалён, настраивайте context

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности