HTTP-Client-Hinweise

Client-Hinweise sind eine Reihe von Feldern im HTTP-Anfrage-Header, die ein Server proaktiv von einem Client anfordern kann, um Informationen über das Gerät, das Netzwerk, den Benutzer und benutzerspezifische Präferenzen des User-Agents zu erhalten. Der Server kann basierend auf den Informationen, die der Client bereitstellt, entscheiden, welche Ressourcen gesendet werden.

Die Liste der "Hinweis"-Header ist im Thema HTTP Headers aufgeführt und unten zusammengefasst.

Überblick

Ein Server muss ankündigen, dass er Client-Hinweise unterstützt, indem er den Accept-CH-Header verwendet, um die Hinweise zu spezifizieren, die er zu erhalten wünscht. Wenn ein Client, der Client-Hinweise unterstützt, den Accept-CH-Header empfängt, kann er wählen, einige oder alle der aufgeführten Client-Hinweis-Header in seine nachfolgenden Anfragen aufzunehmen.

Beispielsweise könnte der Client nachfolgend dem Accept-CH im untenstehenden Antwortbeispiel die Header Width, Downlink und Sec-CH-UA zu allen nachfolgenden Anfragen hinzufügen.

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

Dieser Ansatz ist effizient, da der Server nur die Informationen anfordert, die er sinnvoll verarbeiten kann. Er ist auch relativ "datenschutzfreundlich", da es dem Client überlassen ist, zu entscheiden, welche Informationen sicher geteilt werden können.

Es gibt eine kleine Menge an Client-Hinweis-Headern mit geringer Entropie, die vom Client gesendet werden können, auch wenn sie nicht angefordert wurden.

Hinweis: Client-Hinweise können auch in HTML mit dem <meta>-Element unter Verwendung des http-equiv-Attributs angegeben werden.

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

Caching und Client-Hinweise

Client-Hinweise, die bestimmen, welche Ressourcen in Antworten gesendet werden, sollten generell auch im Vary-Header der betreffenden Antwort enthalten sein. Dies stellt sicher, dass für jeden unterschiedlichen Wert des Hinweis-Headers eine andere Ressource zwischengespeichert wird.

http
Vary: Accept, Width, ECT

Es könnte bevorzugt werden, darauf zu verzichten, Vary zu spezifizieren, oder eine andere Strategie für Client-Hinweis-Header zu verwenden, bei denen sich der Wert häufig ändert, da dies die Ressource effektiv unveränderlich macht. (Ein neuer Cache-Eintrag wird für jeden einzigartigen Wert erstellt.) Dies gilt insbesondere für Netzwerk-Client-Hinweise wie Downlink und RTT. Weitere Informationen finden Sie unter HTTP Caching > Vary.

Hinweislebensdauer

Ein Server gibt die Client-Hinweis-Header an, die er im Accept-CH-Antwort-Header erhalten möchte. Der User-Agent fügt die angeforderten Client-Hinweis-Header, oder zumindest die Teilmenge, die er mit diesem Server teilen möchte, allen nachfolgenden Anfragen in der aktuellen Browsing-Sitzung hinzu.

Mit anderen Worten, die Anforderung einer bestimmten Reihe von Hinweisen läuft nicht ab, bis der Browser heruntergefahren wird.

Ein Server kann die Menge an Client-Hinweisen, die er erhalten möchte, ersetzen, indem er den Accept-CH-Antwort-Header mit einer neuen Liste erneut sendet. Um beispielsweise keine Hinweise mehr anzufordern, würde er Accept-CH mit einer leeren Liste senden.

Hinweis: Die für eine bestimmte Herkunft festgelegten Client-Hinweise können auch durch Senden eines Clear-Site-Data: "clientHints"-Antwort-Headers für eine URL innerhalb dieser Herkunft gelöscht werden.

Hinweise mit geringer Entropie

Client-Hinweise werden grob in solche mit hoher und niedriger Entropie eingeteilt. Die Hinweise mit niedriger Entropie sind diejenigen, die nicht viel Informationen preisgeben, die möglicherweise zur Erstellung eines Fingerabdrucks eines Benutzers verwendet werden könnten. Sie können standardmäßig bei jeder Client-Anfrage gesendet werden, unabhängig vom Accept-CH-Antwort-Header des Servers, je nach Erlaubnisrichtlinie. Hinweise mit geringer Entropie sind:

Hinweise mit hoher Entropie

Die Hinweise mit hoher Entropie sind solche, die potenziell mehr Informationen preisgeben könnten, die für das Fingerprinting eines Benutzers genutzt werden können, und daher so gestaltet sind, dass der User-Agent entscheiden kann, ob er sie bereitstellt. Die Entscheidung könnte auf Benutzereinstellungen, einer Berechtigungsanfrage oder der Erlaubnisrichtlinie basieren. Alle Client-Hinweise, die keine Hinweise mit niedriger Entropie sind, gelten als Hinweise mit hoher Entropie.

Kritische Client-Hinweise

Ein kritischer Client-Hinweis ist einer, bei dem die Anwendung der Antwort die gerenderte Seite signifikant verändern kann, potenziell auf eine Weise, die störend ist oder die Benutzerfreundlichkeit beeinträchtigt, und daher vor dem Darstellen des Inhalts angewendet werden muss. Zum Beispiel wird Sec-CH-Prefers-Reduced-Motion häufig als kritischer Hinweis behandelt, weil er das Verhalten von Animationen stark beeinflussen könnte und weil ein Benutzer, der diese Präferenz wählt, sie eingestellt haben muss.

Ein Server kann den Critical-CH-Antwort-Header zusammen mit Accept-CH verwenden, um anzugeben, dass ein akzeptierter Client-Hinweis auch ein kritischer Client-Hinweis ist (ein Header in Critical-CH muss auch in Accept-CH erscheinen). Bei Erhalt einer Antwort mit Critical-CH müssen User-Agents überprüfen, ob die angegebenen kritischen Header in der ursprünglichen Anfrage gesendet wurden. Wenn nicht, wird der User-Agent die Anfrage erneut senden, anstatt die Seite darzustellen. Dieser Ansatz stellt sicher, dass Client-Präferenzen, die über kritische Client-Hinweise festgelegt werden, immer verwendet werden, auch wenn sie nicht in der ersten Anfrage enthalten sind oder wenn sich die Serverkonfiguration ändert.

Zum Beispiel teilt in diesem Fall der Server einem Client über Accept-CH mit, dass er Sec-CH-Prefers-Reduced-Motion akzeptiert, und Critical-CH wird verwendet, um anzugeben, dass Sec-CH-Prefers-Reduced-Motion als kritischer Client-Hinweis betrachtet wird:

http
HTTP/1.1 200 OK
Content-Type: text/html
Accept-CH: Sec-CH-Prefers-Reduced-Motion
Vary: Sec-CH-Prefers-Reduced-Motion
Critical-CH: Sec-CH-Prefers-Reduced-Motion

Hinweis: Wir haben auch Sec-CH-Prefers-Reduced-Motion im Vary-Header spezifiziert, um dem Browser anzuzeigen, dass der bereitgestellte Inhalt auf Basis des Header-Wertes unterschiedlich sein wird, selbst wenn die URL gleich bleibt, sodass der Browser nicht einfach eine bestehende zwischengespeicherte Antwort verwenden und stattdessen diese Antwort separat zwischenspeichern sollte. Jeder im Critical-CH-Header aufgeführte Header sollte auch in den Accept-CH- und Vary-Headern vorhanden sein.

Da Sec-CH-Prefers-Reduced-Motion ein kritischer Hinweis ist, der nicht in der ursprünglichen Anfrage war, wiederholt der Client automatisch die Anfrage – diesmal teilt er dem Server über Sec-CH-Prefers-Reduced-Motion mit, dass er eine Benutzerpräferenz für reduzierte Bewegungsanimationen hat.

http
GET / HTTP/1.1
Host: example.com
Sec-CH-Prefers-Reduced-Motion: "reduce"

Hinweisarten

User-Agent-Client-Hinweise

User-Agent (UA) Client-Hinweis-Header ermöglichen es einem Server, Antworten basierend auf dem User-Agent (Browser), dem Betriebssystem und dem Gerät zu variieren. Eine Liste der Sec-CH-UA-*-Header finden Sie unter User-Agent-Client-Hinweis-Header.

Client-Hinweise sind über die User-Agent-Client-Hints-API für JavaScript auf Webseiten verfügbar.

Hinweis: Server erhalten derzeit die meisten der gleichen Informationen durch das Parsing des User-Agent-Headers. Aus historischen Gründen enthält dieser Header eine Menge größtenteils irrelevanter Informationen und Informationen, die zur Identifizierung eines bestimmten Benutzers verwendet werden könnten. UA-Client-Hinweise bieten eine effizientere und datenschutzfreundlichere Möglichkeit, die gewünschten Informationen zu erhalten. Sie sollen letztendlich diesen älteren Ansatz ersetzen.

Hinweis: User-Agent-Client-Hinweise stehen nicht in fenced frames zur Verfügung, da sie auf der Delegation der Berechtigungsrichtlinie basieren, die zum Datenleak verwendet werden könnte.

Benutzerpräferenz-Media-Features-Client-Hinweise

Benutzerpräferenz-Media-Features-Client-Hinweise ermöglichen es einem Server, Antworten basierend auf den Präferenzen eines User-Agents für CSS-Media-Features wie Farbschema oder reduzierte Bewegung zu variieren. Header beinhalten: Sec-CH-Prefers-Reduced-Motion, Sec-CH-Prefers-Color-Scheme.

Geräte-Client-Hinweise

Geräte-Client-Hinweise ermöglichen es einem Server, Antworten basierend auf Gerätemerkmalen einschließlich verfügbarem Speicher und Bildschirmparametern zu variieren. Header beinhalten: Device-Memory, Width, Viewport-Width.

Netzwerk-Client-Hinweise

Netzwerk-Client-Hinweise ermöglichen es einem Server, Antworten basierend auf der Benutzerwahl, der Netzwerkbandbreite und der Latenz zu variieren. Header beinhalten: Save-Data, Downlink, ECT, RTT.

Siehe auch