XHTTP: что это
- Автор
- Екатерина Лебедева, редактор раздела knowledge base
- Проверил:
- Артём Волков
- Проверено:
- Опубликовано:
- , обновлено
- Версия гайда:
- 1.0
Коротко
XHTTP — транспорт Xray-core, который передаёт данные VLESS в виде обычных HTTP-запросов и ответов, а не одним TCP-соединением. В Happ он задаётся параметром type=xhttp в ссылке VLESS вместе с path и host.
XHTTP пришёл на смену более раннему транспорту SplitHTTP и умеет работать поверх HTTP/1.1, HTTP/2 и HTTP/3. У него четыре режима: auto выбирает вариант автоматически по типу защиты канала, packet-up отправляет данные отдельными запросами, а stream-up и stream-one держат постоянный поток в одну или обе стороны. Транспорт подходит, когда сервер стоит за CDN или обратным прокси и должен принимать обычные HTTP-соединения. В Happ параметр XHTTP указан среди транспортов VLESS, а для VMess и Trojan документация его не упоминает.
XHTTP — транспорт Xray-core, по которому клиент и сервер обмениваются данными в виде обычных HTTP-запросов и ответов вместо одного долгого TCP-соединения. Он заменил собой более ранний транспорт SplitHTTP и умеет работать поверх HTTP/1.1, HTTP/2 и HTTP/3.
Суть транспорта
Любому протоколу Xray-core — VLESS, VMess или Trojan — нужен транспорт: способ, которым байты фактически идут по сети между клиентом и сервером. Самый простой вариант — обычное TCP-соединение. XHTTP устроен иначе: клиент и сервер обмениваются данными в форме HTTP-запросов и ответов, которые понимает любой веб-сервер, обратный прокси или CDN на пути.
Транспорт разделяет данные, которые клиент отправляет на сервер, и данные, которые сервер отправляет клиенту, и передаёт их разными HTTP-обменами. Такой формат совпадает с обычным веб-трафиком на уровне отдельного запроса, поэтому его пропускают узлы, рассчитанные на HTTP или HTTP/2, включая CDN.
XHTTP — не первая попытка Xray-core сделать HTTP-транспорт: до него существовал транспорт с названием SplitHTTP. XHTTP занял его место, сохранив идею разделения потоков и добавив новые режимы работы и поддержку более новых версий протокола HTTP.
Режимы работы
Поведение XHTTP настраивается параметром mode. Значение auto — вариант по умолчанию, и в большинстве ссылок его не меняют.
| Режим | Как передаются данные | Когда его выбирает auto |
|---|---|---|
auto | Сам выбирает один из трёх режимов ниже | Значение по умолчанию |
packet-up | Каждая порция исходящих данных — отдельный HTTP-запрос, ответ сервера идёт потоком | Обычный TLS без HTTP/2 или его отсутствие |
stream-up | Клиент держит один длинный потоковый запрос на отправку и получает поток в ответ | TLS с HTTP/2 |
stream-one | Одно HTTP-соединение обслуживает передачу в обе стороны | Reality |
packet-up — самый совместимый вариант: он опирается только на обычные HTTP-запросы и подходит, если между клиентом и сервером стоит строгий обратный прокси. stream-up и stream-one эффективнее за счёт постоянного соединения, но требуют, чтобы промежуточные узлы полностью поддерживали потоковую передачу HTTP/2 или HTTP/3.
Версию самого протокола HTTP — 1.1, 2 или 3 — Xray-core также выбирает по контексту: с TLS или Reality используется HTTP/2, без них — HTTP/1.1. Передача через HTTP/3 возможна, если сервер стоит за CDN, который сам конвертирует внешний HTTP/3 во внутренний HTTP/2 или HTTP/1.1.
Как это выглядит в Happ
Документация Happ перечисляет XHTTP среди транспортов VLESS вместе с TCP, WebSocket и gRPC. У VMess и Trojan XHTTP среди описанных транспортов не значится — для них перечислены только TCP, WebSocket и gRPC.
В ссылке VLESS транспорт задаётся параметром type=xhttp, а сама настройка сервера передаётся теми же параметрами, что и для WebSocket, — path и host, плюс собственный параметр mode:
vless://00000000-0000-0000-0000-000000000000@example.com:443?type=xhttp&mode=auto&path=%2Fexample&host=example.com&security=tls&sni=example.com#ExampleВсе эти параметры Happ передаёт в Xray-core без изменений — приложению не нужно ничего настраивать отдельно, достаточно правильной ссылки или подписки. Если значение path или host не совпадает с тем, что ждёт сервер или прокси перед ним, Happ не сможет установить соединение и покажет ошибку «Конфигурация не валидная» при импорте либо тайм-аут при попытке подключиться к уже добавленному серверу.
Чем XHTTP отличается от WebSocket и gRPC
XHTTP, WebSocket и gRPC решают одну задачу — донести трафик VLESS через инфраструктуру, рассчитанную на обычный веб-трафик, — но делают это по-разному.
| Транспорт | Основа | Форма соединения |
|---|---|---|
| XHTTP | HTTP/1.1, HTTP/2 или HTTP/3 | От отдельных запросов (packet-up) до одного потока (stream-one) — выбирается по ситуации |
| WebSocket | Один HTTP-запрос с заголовком Upgrade | Одно постоянное соединение на весь сеанс |
| gRPC | HTTP/2 | Потоки внутри одного HTTP/2-соединения, с собственной мультиплексацией |
WebSocket — универсальная веб-технология, которую поддерживает практически любой сервер и браузер. gRPC полагается на возможности HTTP/2 и подходит, когда сервер или прокси перед ним умеет работать именно с этим протоколом. XHTTP — собственная разработка Xray-core: она не привязана к одной версии HTTP и подбирает поведение под конкретную схему TLS или Reality на сервере.
Выбор транспорта не меняет сам протокол VLESS: UUID клиента, адрес назначения и способ проверки сервера остаются такими же, как описано на странице VLESS в Happ. Транспорт влияет только на то, как байты идут по сети между клиентом и сервером.
Главное
- XHTTP — транспорт Xray-core, который передаёт данные HTTP-запросами и заменил собой более ранний транспорт SplitHTTP.
- У XHTTP четыре режима: auto подбирает вариант автоматически, packet-up шлёт данные отдельными запросами, stream-up и stream-one держат постоянный поток данных.
- В Happ транспорт задаётся параметром type=xhttp в ссылке VLESS вместе с path и host, как у WebSocket.
- Документация Happ связывает XHTTP только с протоколом VLESS; для VMess и Trojan среди перечисленных транспортов его нет.
- XHTTP работает и с обычным TLS-сертификатом, и с Reality, а версию HTTP выбирает автоматически в режиме auto.
Частые вопросы
Чем XHTTP отличается от WebSocket?
WebSocket устанавливает одно постоянное соединение поверх одного HTTP-запроса с заголовком Upgrade и держит его открытым всё время сеанса. XHTTP в режиме packet-up обменивается отдельными HTTP-запросами, а в stream-up и stream-one работает ближе к WebSocket, но поверх HTTP/2 или HTTP/3. Оба транспорта используют одинаковые параметры path и host, поэтому в ссылке отличается только значение type.
Какой режим XHTTP выбрать: packet-up, stream-up или stream-one?
Обычно достаточно auto: Xray-core сам выберет stream-up для TLS с HTTP/2, stream-one для Reality и packet-up в остальных случаях. Указывать режим вручную имеет смысл, если администратор сервера прямо просит конкретное значение — например, из-за настроек обратного прокси, который иначе не пропускает длинные потоковые запросы.
Работает ли XHTTP в Happ с VMess или Trojan?
В документации Happ среди транспортов VMess и Trojan указаны TCP, WebSocket и gRPC, а XHTTP числится только у VLESS. Если провайдер выдал ссылку vmess:// или trojan:// с type=xhttp, проверьте её у него: это нестандартная для описанных в документации Happ комбинаций настройка.
Нужен ли для XHTTP домен и сертификат?
Это зависит от слоя защиты, а не от транспорта. С обычным TLS нужен домен с действительным сертификатом, как для сайта. С Reality сертификат не нужен — клиент проверяет сервер по публичному ключу. XHTTP работает в обеих схемах, параметр security в ссылке остаётся отдельным от type=xhttp.
Что означают параметры path и host у XHTTP?
path — адрес на сервере, по которому XHTTP принимает запросы, например /example. host — значение заголовка Host, которое видит обратный прокси или CDN перед сервером. Оба параметра должны совпадать с настройкой сервера: если сервер ждёт другой путь или домен, Happ не сможет установить соединение и покажет ошибку конфигурации.
Что случилось с транспортом SplitHTTP?
SplitHTTP — прежнее название того же транспорта в Xray-core; в текущих версиях он называется XHTTP и получил дополнительные режимы работы и поддержку HTTP/3. Старые ссылки с type=splithttp современные версии ядра по-прежнему распознают, но в новых конфигурациях используют название xhttp.
Упомянутые темы
Похожие материалы
- WebSocket-транспорт в Happ: как работает и когда нужен
- gRPC-транспорт
- VLESS: что это за протокол и как он работает в Happ
- VLESS или VMess в Happ: сравнение протоколов
- VLESS в Happ
- VMess в Happ: ссылка vmess://, шифрование и время
- Trojan в Happ: ссылка trojan://, TLS и пароль
- Что такое VPN простыми словами и чем он отличается от прокси-клиента
Разделы по теме
Источники
- Документация Xray: транспорт XHTTP — обращение 28 сентября 2026
- Документация Happ: примеры ссылок и параметры — обращение 28 сентября 2026
- Документация Xray: исходящее подключение VLESS — обращение 28 сентября 2026