103 Early Hints (RFC 8297) позволяет серверу отправить часть заголовков — обычно Link с rel=preload или rel=preconnect — еще до того, как готов окончательный ответ. Пока сервер формирует страницу, браузер уже может открыть соединения и загрузить критически важные CSS, шрифты или скрипты. Окончательный ответ на тот же запрос, обычно 200 OK, приходит следом.
Браузеры воспринимают эти подсказки как рекомендацию. Браузеры на основе Chromium учитывают подсказки preload и preconnect из ответа 103 при навигации верхнего уровня по HTTP/2 и HTTP/3; другие браузеры поддерживают ранние подсказки в разной степени. Клиенты, которые не понимают 103, его игнорируют. Некоторые CDN умеют отправлять ответы 103 за вас: например, Cloudflare формирует их на основе заголовков Link из предыдущих ответов.
Подсказки приходят раньше, чем сервер определился с окончательным кодом ответа, поэтому окончательный ответ все еще может оказаться редиректом или ошибкой, и тогда заранее загруженные ресурсы не пригодятся. Заголовки из ответа 103 не переносятся в окончательный ответ: если они важны, продублируйте их там.
Пример ответа
HTTP/1.1 103 Early Hints
Link: </assets/app.css>; rel=preload; as=style
Link: <https://cdn.example.com>; rel=preconnect
HTTP/1.1 200 OK
Date: Fri, 06 Nov 2026 10:15:32 GMT
Content-Type: text/html; charset=utf-8
Link: </assets/app.css>; rel=preload; as=style
Link: <https://cdn.example.com>; rel=preconnect
Transfer-Encoding: chunked SEO и проверка редиректов
Напрямую на SEO код 103 не влияет: поисковые роботы игнорируют промежуточные ответы и индексируют окончательный. Косвенно ранние подсказки могут улучшить для реальных пользователей метрики загрузки, например Largest Contentful Paint. Проверка редиректов показывает окончательный код ответа на каждом переходе: ответы 103 обрабатывает сам HTTP-клиент, и отдельными переходами они не отображаются.
Типичные причины и сценарии использования
- Функция CDN, например Cloudflare Early Hints, повторяет заголовки
Link: rel=preload, которые встречала в предыдущих ответах. - Сервер приложений отправляет 103, пока выполняет запросы к базе данных или рендерит страницу.
- Подсказки как будто не работают: проверьте, что сайт отдается по HTTP/2 или HTTP/3 и что подсказки отправляются при переходах на страницы, а не для подресурсов.