Модуль java.net.http
Системные свойства, используемые API java.net.http
Ниже приведен список системных сетевых свойств, используемых реализацией HTTP-клиента java.net.http в JDK. Для любых перечисленных ниже свойств, принимающих числовое значение, используется значение по умолчанию, если строку невозможно преобразовать в число. Если не указано иное, все значения можно задать в файле conf/net.properties. Во всех случаях значения можно указать как системные свойства в командной строке; в таком случае любое значение в conf/net.properties переопределяется. Не гарантируется, что значения свойств можно задать программно с помощью System.setProperty(). Другие реализации этого API могут не поддерживать эти свойства.
jdk.httpclient.allowRestrictedHeaders(по умолчанию: см. ниже)
Разделенный запятыми список обычно запрещенных имен HTTP-заголовков, которые пользователи могут задавать в HTTP-запросах или в коде пользователя в экземплярах HttpRequest. По умолчанию пользовательскому коду запрещено задавать следующие заголовки запросов: connection, content-length, expect, host и upgrade. Это поведение можно переопределить с помощью данного свойства. Имена не зависят от регистра символов, пробелы игнорируются. Обратите внимание, что это свойство предназначено для тестирования, а не для использования в реальных развертываниях. При использовании этого свойства вероятны ошибки протокола или другое неопределенное поведение. В зависимости от контекста могут быть и другие заголовки, задание которых ограничено. Эти ограничения нельзя переопределить с помощью данного свойства.jdk.httpclient.bufsize(по умолчанию: 16384 байта или 16 кБ)
Емкость внутренних временных буферов, выделяемых для передачи данных клиенту и от него, в байтах. Допустимые значения находятся в диапазоне [1, 2^14 (16384)]. Если указано недопустимое значение, используется значение по умолчанию.jdk.httpclient.connectionPoolSize(по умолчанию: 0)
Максимальное количество подключений, сохраняемых в кэше постоянных подключений HTTP/1.1. Значение 0 означает, что размер кэша не ограничен.jdk.httpclient.connectionWindowSize(по умолчанию: 2^26)
Размер окна подключения клиента HTTP/2 в байтах. Допустимые значения находятся в диапазоне [2^16-1, 2^31-1]. Если указано недопустимое значение, используется значение по умолчанию. Реализация гарантирует, что фактическое значение будет не меньше размера окна потока, который можно настроить с помощью системного свойстваjdk.httpclient.windowsize.jdk.httpclient.disableRetryConnect(по умолчанию: false)
Определяет, отключены ли автоматические повторные попытки при сбоях подключения. Если значение false, выполняются повторные попытки (с учетом ограничения на их количество).jdk.httpclient.enableAllMethodRetry(по умолчанию: false)
Определяет, разрешено ли автоматически повторять неидемпотентные HTTP-запросы.jdk.httpclient.enablepush(по умолчанию: 1)
Определяет, включена ли push-обещание HTTP/2. Значение 1 включает push-обещание, значение 0 отключает его.jdk.httpclient.hpack.maxheadertablesize(по умолчанию: 16384 или 16 кБ)
Максимальный размер таблицы заголовков HPACK клиента HTTP/2 в байтах.jdk.httpclient.qpack.decoderMaxTableCapacity(по умолчанию: 0)
Максимальный размер динамической таблицы заголовков декодера QPACK клиента HTTP/3 в байтах.
Положительное значение разрешает серверам HTTP/3 добавлять записи в динамическую таблицу декодера QPack. При значении 0 серверам запрещено добавлять записи в динамическую таблицу кодировщика QPack клиента.jdk.httpclient.qpack.encoderTableCapacityLimit(по умолчанию: 4096 или 4 кБ)
Максимальный размер динамической таблицы заголовков кодировщика QPACK клиента HTTP/3 в байтах.
Положительное значение разрешает кодировщику QPack клиента HTTP/3 добавлять записи в динамическую таблицу декодера QPack сервера, если сервер это разрешает.-
jdk.httpclient.HttpClient.log(по умолчанию: нет)
Включает высокоуровневое журналирование различных событий через API журналирования платформы. Значение содержит разделенный запятыми список любых из следующих элементов:- errors
- requests
- headers
- content
- frames
- ssl
- trace
- channel
- http3
- quic
К элементу frames можно добавить разделенный двоеточиями список любых из следующих элементов:- control
- data
- window
- all
К элементу quic можно добавить разделенный двоеточиями список любых из следующих элементов; пакеты журналируются в сокращенном виде, в котором отображаются только смещение и длина кадров, но не их содержимое:- ack: будут журналироваться пакеты, содержащие кадры ack
- cc: будет журналироваться информация об управлении перегрузкой
- control: будут журналироваться пакеты, содержащие управляющие элементы quic (например, кадры, влияющие на управление потоком, или кадры, открывающие либо закрывающие потоки)
- crypto: будут журналироваться пакеты, содержащие криптографические кадры
- data: будут журналироваться пакеты, содержащие кадры потока
- dbb: будет журналироваться информация об использовании прямых байтовых буферов
- ping: будут журналироваться пакеты, содержащие кадры ping
- processed: будет журналироваться информация об управлении потоком (обработанные байты)
- retransmit: будет журналироваться информация о потере пакетов и восстановлении
- timer: будет журналироваться информация о планировании задач отправки
- all
Указание элемента добавляет его в журнал HTTP-клиента. Например, если указать следующее значение, API журналирования платформы будет регистрировать все возможные события HTTP-клиента:
"errors,requests,headers,frames:control:data:window,ssl,trace,channel"
Обратите внимание, что control:data:window можно заменить на all. Имя регистратора — "jdk.httpclient.HttpClient", все записи журнала имеют уровень INFO. Чтобы отладить проблемы с протоколом quic, рекомендуется начать со значенияquic:control:retransmit. jdk.httpclient.keepalive.timeout(по умолчанию: 30)
Количество секунд, в течение которых неактивные HTTP-подключения сохраняются в кэше постоянных подключений. По умолчанию это свойство применяется к HTTP/1.1, HTTP/2 и HTTP/3. Значения для HTTP/2 и HTTP/3 можно переопределить соответственно с помощью свойствjdk.httpclient.keepalive.timeout.h2иjdk.httpclient.keepalive.timeout.h3. Значение, указанное для HTTP/2, используется как значение по умолчанию для HTTP/3. Если задано отрицательное значение, используется значение по умолчанию. Значение 0 допустимо и не имеет особого смысла, кроме того, что подключение закрывается при переходе в неактивное состояние.jdk.httpclient.keepalive.timeout.h2(по умолчанию: см. ниже)
Количество секунд, в течение которых неактивные подключения HTTP/2 сохраняются открытыми. Если значение не задано или отрицательно, используется настройкаjdk.httpclient.keepalive.timeout. Значение 0 допустимо и не имеет особого смысла, кроме того, что подключение закрывается при переходе в неактивное состояние.jdk.httpclient.keepalive.timeout.h3(по умолчанию: см. ниже)
Количество секунд, в течение которых неактивные подключения HTTP/3 сохраняются открытыми. Если значение не задано или отрицательно, используется настройкаjdk.httpclient.keepalive.timeout.h2. Значение 0 допустимо и не имеет особого смысла, кроме того, что подключение закрывается при переходе в неактивное состояние.jdk.httpclient.maxframesize(по умолчанию: 16384 или 16 кБ)
Максимальный размер кадра клиента HTTP/2 в байтах. Серверу запрещено отправлять кадры большего размера.jdk.httpclient.maxLiteralWithIndexing(по умолчанию: 512)
Максимальное количество строк полей заголовка (пар имя-значение заголовка), которые клиент готов добавить в динамическую таблицу декодера HPack или QPACK при декодировании всей секции полей заголовка. Это исключительно ограничение реализации. Если узел отправляет секцию полей или набор инструкций QPACK, кодирование которых превышает это ограничение, будет выдано исключениеProtocolException. Нулевое или отрицательное значение означает отсутствие ограничения.jdk.httpclient.maxNonFinalResponses(по умолчанию: 8)
Максимальное количество промежуточных (не окончательных) ответов, которые клиент готов принять в потоке запрос-ответ до получения окончательного ответа. Промежуточные ответы имеют код состояния в диапазоне [100, 199] включительно. Это исключительно ограничение реализации. Если узел отправляет больше промежуточных ответов, чем допускает это ограничение, прежде чем отправить окончательный ответ, будет выдано исключениеProtocolException. Нулевое или отрицательное значение означает отсутствие ограничения.jdk.httpclient.maxstreams(по умолчанию: 100)
Максимальное количество потоков push HTTP/2 или HTTP/3, которые клиент разрешает серверам открывать одновременно.jdk.httpclient.receiveBufferSize(по умолчанию: значение по умолчанию операционной системы)
Размер сокетного буфера приема HTTP-клиента в байтах. Значения меньше или равные нулю игнорируются.jdk.httpclient.redirects.retrylimit(по умолчанию: 5)
Максимальное количество попыток отправки HTTP-запроса при перенаправлении или любом сбое по любой причине.jdk.httpclient.websocket.writeBufferSize(по умолчанию: 16384 или 16 кБ)
Размер буфера, используемого реализацией веб-сокетов для записи в сокет.jdk.httpclient.windowsize(по умолчанию: 16777216 или 16 МБ)
Размер окна потока клиента HTTP/2 в байтах. Допустимые значения находятся в диапазоне [2^14, 2^31-1]. Если указано недопустимое значение, используется значение по умолчанию.jdk.httpclient.auth.retrylimit(по умолчанию: 3)
Количество повторных попыток фильтра базовой аутентификации после неудачной аутентификации. Общее количество попыток аутентификации всегда на единицу больше ограничения на повторные попытки, поскольку первоначальный запрос не учитывается.jdk.httpclient.sendBufferSize(по умолчанию: значение по умолчанию операционной системы)
Размер сокетного буфера отправки HTTP-клиента в байтах. Значения меньше или равные нулю игнорируются.jdk.internal.httpclient.disableHostnameVerification(по умолчанию: false)
Если значение равно true (или задана пустая строка), проверка имени узла в SSL-сертификатах отключается. Это только системное свойство, оно недоступно вconf/net.properties. Свойство предназначено только для тестирования.jdk.http.auth.proxying.disabledSchemes(по умолчанию: см. conf/net.properties)
Разделенный запятыми список имен схем HTTP-аутентификации, использование которых реализацией HTTP-клиента для HTTP-прокси запрещено.jdk.http.auth.tunneling.disabledSchemes(по умолчанию: см. conf/net.properties)
Разделенный запятыми список имен схем HTTP-аутентификации, использование которых реализацией HTTP-клиента для туннелирования HTTP CONNECT запрещено.jdk.http.maxHeaderSize(по умолчанию: 393216 или 384 кБ)
Максимальный размер секции полей заголовка, которую клиент готов принять. Он вычисляется как сумма размера несжатого имени заголовка, размера несжатого значения заголовка и накладных расходов в 32 байта для каждой строки секции полей. Если узел отправляет секцию полей, превышающую этот размер, будет выдано исключениеProtocolException. Ограничение применяется ко всем версиям протокола. Нулевое или отрицательное значение означает отсутствие ограничения.
Следующие системные свойства можно использовать для настройки некоторых аспектов реализации протокола QUIC, используемой для HTTP/3:
jdk.httpclient.quic.receiveBufferSize(по умолчанию: значение по умолчанию операционной системы)
Размер буфера приема UDP-сокета клиента QUIC в байтах. Значения меньше или равные нулю игнорируются.jdk.httpclient.quic.sendBufferSize(по умолчанию: значение по умолчанию операционной системы)
Размер буфера отправки UDP-сокета клиента QUIC в байтах. Значения меньше или равные нулю игнорируются.jdk.httpclient.quic.defaultMTU(по умолчанию: 1200 байт)
Размер MTU (Maximum Transmission Unit, максимальная единица передачи) по умолчанию, используемый для подключений quic. Реализация клиента HTTP/3 по умолчанию не поддерживает обнаружение MTU пути, но будет пытаться отправлять пакеты 1-RTT размером до значения, заданного этим свойством. Более высокое значение может повысить производительность загрузки, если клиент и серверы находятся на одном компьютере, однако при использовании в сети это, вероятно, приведет к невосстановимой потере пакетов. Допустимые значения находятся в диапазоне [1200, 65527]. Если указано значение вне этого диапазона, будет использоваться минимальное значение по умолчанию.jdk.httpclient.quic.maxBytesInFlight(по умолчанию: 16777216 байт или 16 МБ)
Максимальное количество неподтвержденных байтов, которые контроллер перегрузки quic разрешает одновременно передавать. При достижении этого количества новые данные не отправляются, пока не будут подтверждены некоторые из передаваемых пакетов.
Допустимые значения находятся в диапазоне [2^14, 2^24] (или [16 кБ, 16 МБ]). Если указано значение вне этого диапазона, оно будет ограничено ближайшим значением в допустимом диапазоне.jdk.httpclient.quic.maxInitialData(по умолчанию: 15728640 байт или 15 МБ)
Начальный предел управления потоком для подключений quic в байтах. Допустимые значения находятся в диапазоне [0, 2^60]. Начальное значение также используется для инициализации размера окна приема. Если значение меньше 16 кБ, размер окна будет установлен в 16 кБ.jdk.httpclient.quic.maxStreamInitialData(по умолчанию: 6291456 байт или 6 МБ)
Начальный предел управления потоком для потоков quic в байтах. Допустимые значения находятся в диапазоне [0, 2^60]. Начальное значение также используется для инициализации размера окна приема. Если значение меньше 16 кБ, размер окна будет установлен в 16 кБ.jdk.httpclient.quic.maxInitialTimeout(по умолчанию: 30 секунд)
Максимальное время в секундах, в течение которого клиент будет ожидать ответа сервера и повторно передавать первый пакет Quic INITIAL, прежде чем выдать исключениеConnectException. Первый пакет INITIAL, полученный от целевого сервера, отключает этот тайм-аут.
Пакеты
| Пакет | Описание |
|---|---|
| java.net.http | API HTTP-клиента и WebSocket |
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.