Статус: 103
103 Ранние подсказки
HTTP 103 Early Hints информационный ответ может быть отправлен сервером, пока он еще подготавливает ответ, и содержать подсказки о сайтах и ресурсах, на которые, как ожидает сервер, будет ссылаться окончательный ответ. Это позволяет браузеру заранее установить соединение с сайтами или начать предварительную загрузку ресурсов еще до того, как сервер подготовит и отправит окончательный ответ. Клиент загружает предварительно загружаемые ресурсы, указанные в ранних подсказках, сразу после их получения.
Ответ с ранними подсказками в первую очередь предназначен для использования с заголовком Link, который указывает загружаемые ресурсы. Он также может содержать заголовок Content-Security-Policy, который применяется при обработке ранней подсказки.
Сервер может отправить несколько ответов 103, например, после перенаправления. Браузеры обрабатывают только первый ответ с ранними подсказками, и этот ответ необходимо отбросить, если запрос приводит к перенаправлению на другой источник.
Примечание: В целях совместимости и безопасности рекомендуется отправлять ответы HTTP 103 Early Hints только по HTTP/2 или более поздней версии, если только не известно, что клиент корректно обрабатывает информационные ответы.
По этой причине большинство браузеров поддерживают эту функцию только в HTTP/2 или более поздней версии. См. раздел совместимость с браузерами ниже. Несмотря на это, в приведенных ниже примерах используется нотация в стиле HTTP/1.1, как принято обычно.
Синтаксис
103 Early Hints
Примеры
>Пример предварительного подключения
Следующий ответ с ранней подсказкой 103 показывает, как сервер сообщает клиенту, что ему может понадобиться заранее установить соединение с определенным источником (https://cdn.example.com). Как и атрибут rel=preconnect в HTML, это подсказка о том, что странице, вероятно, понадобятся ресурсы с источника целевого ресурса и что браузер может повысить удобство работы пользователя, заранее установив соединение с этим источником.
103 Early Hint Link: <https://cdn.example.com>; rel=preconnect, <https://cdn.example.com>; rel=preconnect; crossorigin
В этом примере предварительно устанавливается соединение с https://cdn.example.com дважды:
- Первое соединение будет использоваться для загрузки ресурсов, которые можно получить без CORS, например изображений.
- Второе соединение включает атрибут
crossoriginи будет использоваться для загрузки ресурсов, защищенных CORS, например шрифтов.
Ресурсы, защищенные CORS, необходимо загружать через полностью отдельное соединение. Если вам нужен только один тип ресурсов с источника, достаточно установить предварительное соединение один раз.
Затем сервер отправляет окончательный ответ. Он включает предварительную загрузку шрифта с crossorigin и <img>, загружаемый с дополнительного источника.
200 OK Content-Type: text/html <!doctype html> ... <link rel="preload" href="https://cdn.example.com/fonts/my-font.woff2" as="font" type="font/woff2" crossorigin> ... <img src="https://cdn.example.com/images/image.jpg" alt=""> ...
Пример предварительной загрузки
Следующий ответ с ранней подсказкой 103 указывает, что окончательному ответу может потребоваться таблица стилей style.css.
103 Early Hint Link: </style.css>; rel=preload; as=style
Затем сервер отправляет окончательный ответ. Он содержит ссылку на таблицу стилей, которая, возможно, уже была предварительно загружена по ранней подсказке.
200 OK Content-Type: text/html <!doctype html> ... <link rel="stylesheet" rel="preload" href="style.css" /> ...
Ответ с ранней подсказкой и CSP
В следующем примере показан тот же ответ с ранней подсказкой, но с включенным заголовком Content-Security-Policy.
103 Early Hint Content-Security-Policy: style-src: self; Link: </style.css>; rel=preload; as=style
Ранний ответ ограничивает предварительную загрузку тем же источником, что и у запроса. Таблица стилей будет предварительно загружена, если источник совпадает.
Как показано ниже, в окончательном ответе может быть задана CSP none. Таблица стилей уже была предварительно загружена, но при отображении страницы использоваться не будет.
200 OK Content-Security-Policy: style-src: none; Content-Type: text/html <!doctype html> ... <link rel="stylesheet" rel="preload" href="style.css" /> ...
Спецификации
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari в IOS | Samsung Internet | WebView для Android | WebView в iOS | |
103 |
103Поддерживается только в HTTP/2 и более поздних версиях. |
103Поддерживается только в HTTP/2 и более поздних версиях. |
120 | 89Поддерживается только в HTTP/2 и более поздних версиях. |
17Поддерживается только в HTTP/2 и более поздних версиях. |
103Поддерживается только в HTTP/2 и более поздних версиях. |
120 | 71Поддерживается только в HTTP/2 и более поздних версиях. |
17Поддерживается только в HTTP/2 и более поздних версиях. |
20.0Поддерживается только в HTTP/2 и более поздних версиях. |
103Поддерживается только в HTTP/2 и более поздних версиях. |
17Поддерживается только в HTTP/2 и более поздних версиях. |
preconnect |
103 | 103 | 120 | 89 | 17 | 103 | 120 | 71 | 17 | 20.0 | 103 | 17 |
preload |
103 | 103 | 123 | 89 | Нет | 103 | 123 | 71 | Нет | 20.0 | 103 | Нет |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/103