Spec-Zone.ru › HTTP

Клиентские подсказки

Клиентские подсказки HTTP

Клиентские подсказки — это набор полей заголовков HTTP-запроса, которые сервер может запросить у клиента, чтобы получить информацию об устройстве, сети, пользователе и пользовательских предпочтениях, связанных с пользовательским агентом. Сервер может определить, какие ресурсы отправить, основываясь на информации, которую клиент пожелает предоставить.

Список заголовков «подсказок» приведен в разделе Заголовки HTTP и кратко описан ниже.

Обзор

Сервер должен объявить о поддержке клиентских подсказок, используя заголовок Accept-CH для указания подсказок, которые он заинтересован получить. Когда клиент, поддерживающий клиентские подсказки, получает заголовок Accept-CH, он может выбрать добавление некоторых или всех перечисленных заголовков клиентских подсказок в последующие запросы.

Например, после Accept-CH в ответе ниже клиент мог добавить заголовки Width, Downlink и Sec-CH-UA ко всем последующим запросам.

Accept-CH: Width, Downlink, Sec-CH-UA

Этот подход эффективен, так как сервер запрашивает только ту информацию, которую может использовать. Он также относительно «сохраняет конфиденциальность», так как решение о предоставлении информации принимает клиент.

Существует небольшой набор заголовков клиентских подсказок с низкой энтропией, которые могут быть отправлены клиентом, даже если они не запрашивались.

Примечание: Клиентские подсказки также можно указать в HTML с помощью элемента <meta> и атрибута http-equiv.

<meta http-equiv="Accept-CH" content="Width, Downlink, Sec-CH-UA" />

Кэширование и клиентские подсказки

Заголовки клиентских подсказок, определяющие, какие ресурсы отправляются в ответах, как правило, также должны быть включены в заголовок Vary соответствующего ответа. Это гарантирует, что для каждого различного значения заголовка подсказки будет кэшироваться другой ресурс.

Vary: Accept, Width, ECT

Вы можете предпочесть не указывать Vary или использовать другой подход для заголовков клиентских подсказок, значения которых часто меняются, так как это фактически делает ресурс некэшируемым (для каждого уникального значения создаётся новая запись в кэше). Это особенно относится к клиентским подсказкам сети, таким как Downlink и RTT. Дополнительная информация в разделе HTTP-кэширование > Ответы с различными значениями.

Срок действия подсказок

Сервер указывает заголовки клиентских подсказок, которые он хочет получить, в заголовке ответа Accept-CH. Пользовательский агент добавляет запрошенные заголовки клиентских подсказок или, по крайней мере, подмножество тех, которые он хочет передать данному серверу, ко всем последующим запросам в текущем сеансе просмотра.

Другими словами, запрос на определённый набор подсказок не истекает до закрытия браузера.

Сервер может заменить набор клиентских подсказок, которые он заинтересован получить, повторно отправив заголовок ответа Accept-CH с новым списком. Например, чтобы перестать запрашивать любые подсказки, он отправит Accept-CH с пустым списком.

Подсказки с низкой энтропией

Клиентские подсказки в целом делятся на подсказки с высокой и низкой энтропией.

Подсказки с низкой энтропией — это такие подсказки, которые не раскрывают много информации, которая могла бы быть использована для «отпечатков» (идентификации) конкретного пользователя. Они могут по умолчанию отправляться в каждом запросе клиента, независимо от ответа сервера Accept-CH, в зависимости от политики разрешений. Эти подсказки включают: Save-Data, Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform.

Подсказки с высокой энтропией — это такие подсказки, которые могут раскрыть больше информации, которая может быть использована для идентификации пользователя, поэтому они ограничены таким образом, что пользовательский агент может принять решение о том, предоставлять ли их. Это решение может основываться на пользовательских предпочтениях, запросе разрешения или политике разрешения. Все клиентские подсказки, которые не относятся к подсказкам с низкой энтропией, считаются подсказками с высокой энтропией.

Типы подсказок

Клиентские подсказки пользовательского агента

Заголовки клиентских подсказок пользовательского агента (UA) позволяют серверу изменять ответы в зависимости от пользовательского агента (браузера), операционной системы и устройства. Заголовки включают: Sec-CH-UA, Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform и Sec-CH-UA-Platform-Version.

Клиентские подсказки доступны JavaScript веб-страниц через API клиентских подсказок пользовательского агента.

Примечание: В настоящее время серверы получают большую часть той же информации, анализируя заголовок User-Agent. По историческим причинам этот заголовок содержит много бесполезной и потенциально идентификационной информации. Клиентские подсказки UA предоставляют более эффективный и конфиденциальный способ получения необходимой информации. В конечном итоге они должны заменить этот более старый подход.

Клиентские подсказки устройства

Клиентские подсказки устройства позволяют серверу изменять ответы на основе характеристик устройства, включая доступную память и свойства экрана. Заголовки включают: Device-Memory, DPR, Width, Viewport-Width.

Клиентские подсказки сети

Клиентские подсказки сети позволяют серверу изменять ответы на основе сетевых характеристик пользователя, пропускной способности сети и задержек. Заголовки включают: Save-Data, Downlink, ECT, RTT.

См. также

  • Заголовки клиентских подсказок
  • Vary Заголовок
  • Инфраструктура клиентских подсказок
  • API клиентских подсказок пользовательского агента
  • Улучшение конфиденциальности пользователей и опыта разработчиков с помощью подсказок пользовательского агента (web.dev)

© 2005–2022 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Client_hints

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API