14. Header Field Definitions (Header-Feld-Definitionen)
Dieses Kapitel definiert die Syntax und Semantik aller standardmäßigen HTTP-Headerfelder im HTTP/1.1-Standard. Der Absender sollte keine (SHOULD NOT) Headerfelder generieren, die nicht in diesem Kapitel oder in Abschnitt 7.1 (Entitäts-Headerfelder) definiert sind, es sei denn, der Empfänger behandelt sie als Teil des Entitätskörpers.
Klassifizierung der Headerfelder
HTTP-Headerfelder können nach ihrer Funktion in folgende Kategorien eingeteilt werden:
Allgemeine Headerfelder (General Header Fields)
Gelten für Anfrage- und Antwortnachrichten, aber nicht für die übertragene Entität.
Anfrage-Headerfelder (Request Header Fields)
Ermöglichen es dem Client, zusätzliche Informationen über die Anfrage und den Client selbst an den Server zu übermitteln.
Antwort-Headerfelder (Response Header Fields)
Ermöglichen es dem Server, zusätzliche Informationen über die Antwort zu übermitteln, die nicht in die Statuszeile eingefügt werden können.
Entitäts-Headerfelder (Entity Header Fields)
Definieren Metainformationen über den Entitätskörper oder die durch die Anfrage identifizierte Ressource.
Vollständige Liste der HTTP/1.1 Headerfelder
Headerfelder zur Inhaltsverhandlung
| Headerfeld | Zweck | Beispiel |
|---|---|---|
| 14.1 Accept | Gibt vom Client akzeptierbare Medientypen an | Accept: text/html, application/json |
| 14.2 Accept-Charset | Gibt vom Client akzeptierbare Zeichensätze an | Accept-Charset: utf-8, iso-8859-1 |
| 14.3 Accept-Encoding | Gibt vom Client akzeptierbare Inhaltscodierungen an | Accept-Encoding: gzip, deflate |
| 14.4 Accept-Language | Gibt vom Client bevorzugte Sprachen an | Accept-Language: de, en |
| 14.5 Accept-Ranges | Zeigt an, ob der Server Bereichsanfragen akzeptiert | Accept-Ranges: bytes |
Authentifizierungs-Headerfelder
| Headerfeld | Zweck | Typ |
|---|---|---|
| 14.8 Authorization | Enthält Authentifizierungsinformationen des Benutzeragenten | Anfrage-Header |
| 14.33 Proxy-Authenticate | Authentifizierungs-Challenge des Proxyservers | Antwort-Header |
| 14.34 Proxy-Authorization | Vom Client an den Proxy bereitgestellte Authentifizierungsinformationen | Anfrage-Header |
| 14.47 WWW-Authenticate | Authentifizierungs-Challenge des Servers | Antwort-Header |
Cache-Kontroll-Headerfelder
| Headerfeld | Zweck | Beschreibung |
|---|---|---|
| 14.6 Age | Zeit, die die Antwort im Proxy-Cache verbracht hat | Antwort-Header |
| 14.9 Cache-Control | Gibt Caching-Direktiven an | Allgemeiner Header |
| 14.21 Expires | Gibt Datum/Uhrzeit des Antwortablaufs an | Entitäts-Header |
| 14.32 Pragma | Implementierungsspezifische Direktiven (Abwärtskompatibilität) | Allgemeiner Header |
| 14.44 Vary | Zeigt an, welche Anfrage-Header die Cache-Auswahl beeinflussen | Antwort-Header |
Bedingte Anfrage-Headerfelder
| Headerfeld | Zweck | Validierungsmethode |
|---|---|---|
| 14.24 If-Match | Nur ausführen, wenn ETag übereinstimmt | Starke Validierung |
| 14.25 If-Modified-Since | Nur ausführen, wenn Ressource geändert wurde | Zeitvalidierung |
| 14.26 If-None-Match | Nur ausführen, wenn ETag nicht übereinstimmt | Starke/Schwache Validierung |
| 14.27 If-Range | Bedingte Bereichsanfrage | Kombinierte Validierung |
| 14.28 If-Unmodified-Since | Nur ausführen, wenn Ressource nicht geändert wurde | Zeitvalidierung |
Inhaltsbeschreibungs-Headerfelder
| Headerfeld | Zweck | Beschreibung |
|---|---|---|
| 14.11 Content-Encoding | Auf den Entitätskörper angewendete Codierung | gzip, compress, deflate |
| 14.12 Content-Language | Natürliche Sprache des Entitätskörpers | de-DE, en-US |
| 14.13 Content-Length | Bytelänge des Entitätskörpers | Numerisch |
| 14.14 Content-Location | Alternative Position der Entität | URI |
| 14.15 Content-MD5 | MD5-Digest des Entitätskörpers | Base64-codiert |
| 14.16 Content-Range | Position des partiellen Entitätskörpers | bytes 200-1000/1234 |
| 14.17 Content-Type | Medientyp des Entitätskörpers | text/html; charset=utf-8 |
Verbindungsverwaltungs-Headerfelder
| Headerfeld | Zweck | Beschreibung |
|---|---|---|
| 14.10 Connection | Steuert Optionen der aktuellen Verbindung | keep-alive, close |
| 14.23 Host | Host und Portnummer der Anfrage | Erforderlicher Anfrage-Header |
| 14.39 TE | Vom Client akzeptierbare Transfer-Encodings | trailers, deflate |
| 14.40 Trailer | Zeigt im Nachrichten-Trailer vorhandene Headerfelder an | Chunked-Encoding |
| 14.41 Transfer-Encoding | Auf den Nachrichtenkörper angewendetes Transfer-Encoding | chunked |
| 14.42 Upgrade | Anfrage zum Wechsel zu anderen Protokollen | HTTP/2.0, WebSocket |
| 14.45 Via | Zeichnet zwischengeschaltete Proxies und Gateways auf | Pfadverfolgung |
Entitätsvalidierungs-Headerfelder
| Headerfeld | Zweck | Typ |
|---|---|---|
| 14.19 ETag | Entitäts-Tag (eindeutiger Bezeichner) | Starker/Schwacher Validator |
| 14.29 Last-Modified | Letzte Änderungszeit der Ressource | Zeitstempel |
Anfragekontroll-Headerfelder
| Headerfeld | Zweck | Beschreibung |
|---|---|---|
| 14.7 Allow | Von der Ressource unterstützte HTTP-Methoden | GET, POST, PUT |
| 14.20 Expect | Vom Client erwartetes spezifisches Serververhalten | 100-continue |
| 14.22 From | E-Mail-Adresse des anfragenden Benutzers | Informativ |
| 14.31 Max-Forwards | Maximale Anzahl von Weiterleitungen für TRACE/OPTIONS-Anfragen | Numerisch |
| 14.35 Range | Anfrage für partiellen Inhalt der Entität | bytes=0-499 |
| 14.36 Referer | Ursprungsadresse der Anfrage-URI | URI |
Antwortkontroll-Headerfelder
| Headerfeld | Zweck | Beschreibung |
|---|---|---|
| 14.18 Date | Erstellungsdatum und -zeit der Nachricht | HTTP-Datumsformat |
| 14.30 Location | URI der Umleitung oder neu erstellten Ressource | Absolute/Relative URI |
| 14.37 Retry-After | Schlägt vor, wann der Client es erneut versuchen sollte | Datum oder Sekunden |
| 14.38 Server | Softwareinformationen des Ursprungsservers | Softwarename und Version |
| 14.46 Warning | Zusätzliche Warninformationen | Dreistelliger Warncode |
Benutzeragenten-Informationen
| Headerfeld | Zweck | Beschreibung |
|---|---|---|
| 14.43 User-Agent | Informationen über den anfragenden Benutzeragenten | Browser-Identifikation |
Syntaxregeln für Headerfelder
Die Syntaxregeln für alle HTTP/1.1-Headerfeldwerte werden in Abschnitt 2.2 (Grundregeln) und in diesem Abschnitt beschrieben.
Allgemeine Syntaxregeln
message-header = field-name ":" [ field-value ]
field-name = token
field-value = *( field-content | LWS )
Mehrwertige Headerfelder
Einige Headerfelder können mehrere Werte enthalten, die auf zwei Arten dargestellt werden können:
-
Ein einzelnes Headerfeld, Werte durch Kommas getrennt:
Accept: text/html, application/json, */* -
Mehrere Headerfelder mit demselben Namen:
Accept: text/html
Accept: application/json
Accept: */*
Datums-/Zeitformate
HTTP-Anwendungen müssen die folgenden drei Datums-/Zeitformate akzeptieren:
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov 6 08:49:37 1994 ; ANSI C asctime() format
Wichtige Hinweise
Erweiterbarkeit der Headerfelder
HTTP/1.1 erlaubt Erweiterungs-Headerfelder, aber Empfänger müssen in der Lage sein, unbekannte Headerfelder zu verarbeiten:
- Proxies - müssen nicht erkannte Headerfelder weiterleiten
- Benutzeragenten - sollten nicht erkannte Headerfelder ignorieren
Reihenfolge der Headerfelder
Sofern in der Headerfelddefinition nicht anders angegeben, ist die Reihenfolge der Headerfelder nicht wichtig. Es wird jedoch empfohlen, zuerst allgemeine Headerfelder, dann Anfrage- oder Antwort-Headerfelder und schließlich Entitäts-Headerfelder zu senden.
Größenbeschränkungen für Headerfelder
Obwohl HTTP keine vordefinierte Grenze für die Länge von Headerfeldern festlegt, sollten Implementierungen darauf vorbereitet sein, Headerfelder beliebiger vernünftiger Länge zu akzeptieren.
Verwandte Referenzen
- Für die vollständige Definition der Headerfelder siehe RFC 2616 Kapitel 14 Original
- Für aktualisierte Headerfeldspezifikationen siehe RFC 7230-7235 (HTTP/1.1 neue Version)
- IANA HTTP-Headerfeld-Registrierung: https://www.iana.org/assignments/message-headers
Hinweis: Dieses Kapitel bietet einen Überblick über alle standardmäßigen HTTP/1.1-Headerfelder. Jedes Headerfeld hat detaillierte Syntaxregeln, Verwendungsszenarien und Beispiele. In der praktischen Anwendung ist das Verständnis der korrekten Verwendung dieser Headerfelder entscheidend für den Aufbau standardkonformer HTTP-Anwendungen.