HTTP Sec-CH-UA Header

Der HTTP-Header Sec-CH-UA ist ein Request-Header aus den User Agent Client Hints, der Browser Brand und Major Version übermittelt. Er ersetzt den User-Agent-Header mit einem strukturierten Format, das Browser-Fingerprinting reduziert und Grease Values gegen Parsing-Hacks enthält.

Typ

Request-Header

Syntax

Der Header listet Brand Names mit Major Versions als strukturierte Liste von Quoted Strings.

http
Sec-CH-UA: "Chromium";v="120", "Google Chrome";v="120", "Not_A Brand";v="8"

Direktiven

Die Direktiven definieren Browser Brands und deren Major Versions für Feature Detection.

"Brand Name"
Quoted String mit Browsername oder Engine. Kann echte Brands wie "Google Chrome" oder Grease-Strings wie "Not_A Brand" enthalten zur Verhinderung von String-Matching.
v
Major Version Number des Browsers als String. Beispiel: "120" für Chrome 120.x.x. Minor und Patch Versions werden nicht übermittelt.

Beispiele

Nachfolgend finden Sie praktische Anwendungsbeispiele für den Sec-CH-UA-Header.

Beispiel 1 Chrome auf Desktop

http
GET /api/stats HTTP/1.1
Host: analytics.example.com
Sec-CH-UA: "Chromium";v="120", "Google Chrome";v="120", "Not_A Brand";v="8"
Sec-CH-UA-Mobile: ?0

Chrome 120 Desktop sendet drei Brand-Einträge: Chromium-Engine, Chrome-Browser und Grease-String zur Vermeidung von Parsing-Heuristics.

Beispiel 2 Microsoft Edge Chromium

http
GET /download HTTP/1.1
Host: cdn.example.com
Sec-CH-UA: "Chromium";v="120", "Microsoft Edge";v="120", "Not=A?Brand";v="99"

Edge zeigt Chromium-Basis plus Edge-spezifischen Brand. Grease-String mit ungewöhnlichen Zeichen verhindert naive String-Matching-Logik.

Beispiel 3 Opt-In zu zusaetzlichen Hints

http
HTTP/1.1 200 OK
Accept-CH: Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform
Critical-CH: Sec-CH-UA
Vary: Sec-CH-UA

<script>
  if (navigator.userAgentData) {
    const uaData = await navigator.userAgentData.getHighEntropyValues(['platform', 'model']);
  }
</script>

Server fordert zusätzliche Client Hints an. Critical-CH erzwingt Retry bei fehlendem Header. JavaScript kann High-Entropy Values gezielt abrufen.

Client Hints Negotiation Flow

User-Agent Client Hints Ablauf

Vorteile für die Systemarchitektur

  • Privacy by Default: Nur essenzielle Browser-Info (Brand, Major Version) wird standardmäßig gesendet, detaillierte Hints müssen per Accept-CH angefragt werden
  • Anti-Fingerprinting: Grease-Strings und strukturiertes Format erschweren passive Browser-Fingerprinting-Techniken durch Ad-Tech-Tracker
  • Feature Detection über Version Sniffing: Server können auf Major Versions reagieren für polyfill-Entscheidungen ohne Full User-Agent String Parsing

Spezifikation

User-Agent Client Hints – WICG Draft https://wicg.github.io/ua-client-hints/

Weitere Spezifikationen

Accept-CH Header, Sec-CH-UA-Full-Version-List Header, User-Agent Header