RFC 8941 - Structured Field Values for HTTP (Strukturierte Feldwerte für HTTP)
- Status: Proposed Standard
- Veröffentlicht: February 2021
- Stream: IETF
- Ersetzt durch: RFC9651
- Errata: Keine Errata
Zusammenfassung (Abstract)
Dieses Dokument beschreibt eine Reihe von Datentypen und zugehörigen Algorithmen, die die Definition und Verarbeitung von HTTP-Header- (header) und Trailer-Feldern (trailer) einfacher und sicherer machen sollen. Diese Felder werden als „Strukturierte Felder (Structured Fields)", „Strukturierte Header (Structured Headers)" oder „Strukturierte Trailer (Structured Trailers)" bezeichnet. Es richtet sich an neue HTTP-Feldspezifikationen, die eine strengere, allgemeine Syntax gegenüber herkömmlichen HTTP-Feldwerten bevorzugen.
Status dieses Dokuments (Status of This Memo)
Dies ist ein Internet-Standards-Track-Dokument.
Dieses Dokument ist ein Produkt der Internet Engineering Task Force (IETF). Es repräsentiert den Konsens der IETF-Gemeinschaft. Es wurde einer öffentlichen Überprüfung unterzogen und von der Internet Engineering Steering Group (IESG) zur Veröffentlichung genehmigt. Weitere Informationen zu Internetstandards finden Sie in Abschnitt 2 von RFC 7841.
Informationen zum aktuellen Status dieses Dokuments, zu etwaigen Errata und zur Bereitstellung von Feedback sind unter https://www.rfc-editor.org/info/rfc8941 verfügbar.
Inhaltsverzeichnis (Table of Contents)
- 1. Introduction (Einführung)
- 1.1 Intentionally Strict Processing (Bewusst strenge Verarbeitung)
- 1.2 Notational Conventions (Notationskonventionen)
- 2. Defining New Structured Fields (Neue strukturierte Felder definieren)
- 3. Structured Data Types (Strukturierte Datentypen)
- 3.1 Lists (Listen)
- 3.2 Dictionaries (Wörterbücher)
- 3.3 Items (Elemente)
- 4. Working with Structured Fields in HTTP (Arbeiten mit strukturierten Feldern in HTTP)
- 4.1 Serializing Structured Fields (Serialisierung)
- 4.2 Parsing Structured Fields (Parsen)
- 5. IANA Considerations (IANA-Überlegungen)
- 6. Security Considerations (Sicherheitsüberlegungen)
- 7. References (Referenzen)
Anhänge (Appendices)
- Appendix A. Frequently Asked Questions (Häufig gestellte Fragen)
- Appendix B. Implementation Notes (Implementierungshinweise)
Schnellübersicht der Kernkonzepte (Quick Reference)
Drei übergeordnete Datentypen
1. List (Liste) - Geordnete Folge von Elementen
2. Dictionary (Wörterbuch) - Ungeordnete Zuordnung von Schlüssel-Wert-Paaren
3. Item (Element) - Einzelner Wert
Sechs grundlegende Datentypen
1. Integer (Ganzzahl) - Bereich: -999.999.999.999.999 bis 999.999.999.999.999
2. Decimal (Dezimalzahl) - Bis zu 3 Nachkommastellen
3. String (Zeichenkette) - In doppelte Anführungszeichen eingeschlossener Text
4. Token (Bezeichner) - Bezeichner ohne Anführungszeichen
5. Byte Sequence (Bytefolge) - Binärdaten in Base64-Kodierung
6. Boolean (Wahrheitswert) - ?1 (wahr) oder ?0 (falsch)
Beispiele
List (Liste)
Example-List: "foo", "bar", baz
Example-List: 1, 2, (a b c)
Dictionary (Wörterbuch)
Example-Dict: a=1, b=2
Example-Dict: key="value", flag
Item (Element)
Example-Integer: 42
Example-String: "hello world"
Example-Token: application/json
Example-Boolean: ?1
Bedeutung
RFC 8941 ist eine zentrale Spezifikation der modernen HTTP-Infrastruktur und wird in vielen Bereichen eingesetzt:
1. HTTP/2 und HTTP/3 Header
- Viele neue HTTP-Header verwenden das Format strukturierter Felder
- Effizientere Binärkodierung
2. Client Hints (RFC 8942)
Sec-CH-UA: "Chromium";v="93", " Not;A Brand";v="99"
Sec-CH-Viewport-Width: 1024
Sec-CH-DPR: 2
3. CDN und Cache-Steuerung
CDN-Cache-Control: max-age=3600, s-maxage=7200
4. Moderne Web-Funktionen
- Cross-Origin Resource Policy (CORP)
- Cross-Origin Embedder Policy (COEP)
- Viele sicherheitsbezogene Header
Warum strukturierte Felder benötigt werden
Probleme mit herkömmlichen HTTP-Headern
# Verschiedene Felder verwenden unterschiedliche Syntaxen:
Cache-Control: max-age=3600, private
Accept: text/html, application/json;q=0.9
Link: `https://example.com`; rel="preload"
# Jedes Feld benötigt einen eigenen Parser
# Fehleranfällig und schwer zu warten
Vorteile strukturierter Felder
# Einheitliche Syntax und Parsing-Regeln
Structured-Header: a=1, b=2, c=(x y z)
# Vorteile:
✓ Standardisierte Datentypen
✓ Eindeutige Parsing-Algorithmen
✓ Bessere Interoperabilität
✓ Unterstützung zukünftiger Optimierungen (z. B. Binärkodierung in HTTP/3)
Designprinzipien
1. Bewusste Strenge
- Parsing-Fehler führen sofort zu einem Abbruch, ohne Korrekturversuche
- Vermeidung von Mehrdeutigkeiten und Sicherheitsproblemen
- Förderung der Interoperabilität
2. Vorwärtskompatibilität
- Abstraktes Datenmodell von der Serialisierung getrennt
- Zukünftig können effizientere Serialisierungsformate definiert werden
3. Praxisorientierung
- Basierend auf Erfahrungen mit bestehenden HTTP-Feldern
- Ausgewogenes Verhältnis zwischen Ausdrucksstärke und Komplexität
Schnellbeispiel
Definition eines neuen strukturierten Headers
Angenommen, wir definieren einen "Example-Priorities"-Header:
Spezifikationsdefinition:
-----------
Das HTTP-Headerfeld Example-Priorities ist ein strukturiertes Feld (Structured Field).
Sein Wert MUSS ein Wörterbuch (Dictionary) sein.
Die Schlüssel des Wörterbuchs sind Ressourcenbezeichner (Token), die Werte sind Prioritäten (Integer).
Beispiel:
-----
Example-Priorities: css=10, js=5, images=1
Parsen und Verwenden
// Pseudocode-Beispiel
const header = "css=10, js=5, images=1";
const dict = parseDictionary(header);
console.log(dict.get('css')); // 10
console.log(dict.get('js')); // 5
console.log(dict.get('images')); // 1
Verwandte Ressourcen (Related Resources)
- Offizieller Originaltext: RFC 8941 (TXT)
- Offizielle Seite: RFC 8941 DataTracker
- Errata: RFC Editor Errata
- Verwandte RFCs:
- RFC 7230 - HTTP/1.1 Nachrichtensyntax
- RFC 8942 - Client Hints (verwendet strukturierte Felder)
Zielgruppe
- HTTP-Spezifikationsautoren: Zur Verwendung bei der Definition neuer HTTP-Header
- Browser-Implementierer: Implementierung von Parse- und Serialisierungsalgorithmen
- CDN- und Proxy-Entwickler: Verarbeitung moderner HTTP-Header
- Web-Entwickler: Verständnis moderner HTTP-Header-Formate