HTTPS¶
Стабильность: 2 – Стабильная
API является удовлетворительным. Совместимость с npm имеет высший приоритет и не будет нарушена, кроме случаев явной необходимости.
HTTPS — это протокол HTTP поверх TLS/SSL. В Node.js он реализован отдельным модулем.
Определение отсутствия поддержки криптографии¶
Node.js может быть собран без поддержки модуля node:crypto. В таких случаях попытка выполнить import из https или вызвать require('node:https') приведёт к выбросу ошибки.
При использовании CommonJS выброшенную ошибку можно перехватить через try/catch:
1 2 3 4 5 6 | |
При использовании лексического ключевого слова ESM import ошибку можно перехватить только если обработчик process.on('uncaughtException') зарегистрирован до любой попытки загрузить модуль (например, с помощью модуля предварительной загрузки).
При использовании ESM, если есть вероятность запуска кода на сборке Node.js без поддержки криптографии, рассмотрите использование функции import() вместо лексического import:
1 2 3 4 5 6 | |
Класс: https.Agent¶
Добавлено в: v0.4.5
Объект Agent для HTTPS, аналогичный http.Agent. Подробнее см. https.request().
Как и у http.Agent, метод createConnection(options[, callback]) можно переопределить, чтобы настроить установление TLS-соединений.
Подробности о переопределении этого метода, в том же числе об асинхронном создании сокета с колбэком, см. в
agent.createConnection().
new Agent([options])¶
-
options<Object>Набор настраиваемых опций агента. Может содержать те же поля, что иhttp.Agent(options), а такжеmaxCachedSessions<number>максимальное число кэшированных TLS-сессий. Укажите0, чтобы отключить кэширование сессий TLS. По умолчанию:100.-
servername<string>значение расширения Server Name Indication, отправляемое серверу. Пустая строка''отключает отправку расширения. По умолчанию: имя хоста целевого сервера, если только целевой сервер не задан IP-адресом — тогда по умолчанию''(без расширения).См. раздел возобновления сессии о повторном использовании TLS-сессий.
Событие: 'keylog'¶
line<Buffer>Строка ASCII-текста в формате NSSSSLKEYLOGFILE.tlsSocket<tls.TLSSocket>Экземплярtls.TLSSocket, для которого материал был сгенерирован.
Событие keylog испускается, когда ключевой материал генерируется или получается соединением, управляемым этим агентом (обычно до завершения рукопожатия, но не обязательно). Этот материал можно сохранять для отладки: по нему можно расшифровать захваченный трафик TLS. Для каждого сокета событие может испускаться несколько раз.
Типичный сценарий — дописывать полученные строки в общий текстовый файл, который затем используется программами (например, Wireshark) для расшифровки трафика:
1 2 3 4 5 6 | |
Класс: https.Server¶
- Наследует:
<tls.Server>
См. http.Server.
server.close([callback])¶
callback<Function>- Возвращает:
<https.Server>
См. server.close() в модуле node:http.
server[Symbol.asyncDispose]()¶
Добавлено в: v20.4.0
Вызывает server.close() и возвращает промис, который выполняется, когда сервер закрыт.
server.closeAllConnections()¶
См. server.closeAllConnections() в модуле node:http.
server.closeIdleConnections()¶
См. server.closeIdleConnections() в модуле node:http.
server.headersTimeout¶
- Тип:
<number>По умолчанию:60000
См. server.headersTimeout в модуле node:http.
server.listen()¶
Запускает прослушивание HTTPS-сервером зашифрованных соединений. Метод совпадает с server.listen() у net.Server.
server.maxHeadersCount¶
- Тип:
<number>По умолчанию:2000
См. server.maxHeadersCount в модуле node:http.
server.requestTimeout¶
Добавлено в: v14.11.0
- Тип:
<number>По умолчанию:300000
См. server.requestTimeout в модуле node:http.
server.setTimeout([msecs][, callback])¶
msecs<number>По умолчанию:120000(2 минуты)callback<Function>- Возвращает:
<https.Server>
См. server.setTimeout() в модуле node:http.
server.timeout¶
Добавлено в: v0.11.2
- Тип:
<number>По умолчанию: 0 (без таймаута)
См. server.timeout в модуле node:http.
server.keepAliveTimeout¶
- Тип:
<number>По умолчанию:5000(5 секунд)
См. server.keepAliveTimeout в модуле node:http.
https.createServer([options][, requestListener])¶
options<Object>Принимаетoptionsизtls.createServer(),tls.createSecureContext()иhttp.createServer().requestListener<Function>Обработчик, добавляемый к событию'request'.- Возвращает:
<https.Server>
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Или
1 2 3 4 5 6 7 8 9 10 11 12 | |
1 2 3 4 5 6 7 8 9 10 11 12 | |
Чтобы сгенерировать сертификат и ключ для этого примера, выполните:
1 2 | |
Затем для генерации сертификата pfx для этого примера выполните:
1 2 | |
https.get(options[, callback])¶
https.get(url[, options][, callback])¶
Добавлено в: v0.3.6
url<string>|<URL>options<Object>|<string>|<URL>Принимает те жеoptions, что иhttps.request(), метод по умолчанию — GET.callback<Function>- Возвращает:
<http.ClientRequest>
Аналог http.get(), но для HTTPS.
options может быть объектом, строкой или объектом URL. Если options — строка, она автоматически разбирается через new URL(). Если это URL, он преобразуется в обычный объект options.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
https.globalAgent¶
Добавлено в: v0.5.9
Глобальный экземпляр https.Agent для всех клиентских HTTPS-запросов. Отличается от конфигурации https.Agent по умолчанию тем, что у него включён keepAlive и timeout 5 секунд.
https.request(options[, callback])¶
https.request(url[, options][, callback])¶
Добавлено в: v0.3.6
url<string>|<URL>options<Object>|<string>|<URL>Принимает всеoptionsизhttp.request(), с отличиями значений по умолчанию:protocolПо умолчанию:'https:'portПо умолчанию:443agentПо умолчанию:https.globalAgent
callback<Function>- Возвращает:
<http.ClientRequest>
Выполняет запрос к защищённому веб-серверу.
Также принимаются дополнительные options из tls.connect(): ca, cert, ciphers, clientCertEngine (устарело), crl, dhparam, ecdhCurve, honorCipherOrder, key, passphrase, pfx, rejectUnauthorized, secureOptions, secureProtocol, servername, sessionIdContext, highWaterMark.
options может быть объектом, строкой или объектом URL. Если options — строка, она автоматически разбирается через new URL(). Если это URL, он преобразуется в обычный объект options.
https.request() возвращает экземпляр класса http.ClientRequest. ClientRequest — поток для записи. Чтобы загрузить файл запросом POST, пишите в объект ClientRequest.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Пример с опциями из tls.connect():
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Либо отключите пул соединений, не используя Agent.
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Пример с URL в качестве options:
1 2 3 4 5 | |
Пример привязки к отпечатку сертификата или открытому ключу (аналогично pin-sha256):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | |
Пример вывода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
