HTTP Headers

50+ wichtige Header
Die wichtigsten HTTP-Header für Anfragen, Antworten, Caching, Sicherheit und CORS: Content-Type · Cache-Control · Authorization · Access-Control-Allow-Origin · Set-Cookie HTTP-Header steuern die Kommunikation zwischen Client und Server – sie definieren Inhaltstypen, Caching, Authentifizierung, Sicherheitsrichtlinien und vieles mehr.

Request Headers – Anfrage-Header

User-Agent · Accept · Authorization · Cookie · Host
GET /api/users HTTP/1.1 Host: api.example.com Authorization: Bearer eyJhbGciOiJIUzI1NiIs... User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)

Request Header werden vom Client an den Server gesendet. Sie enthalten Informationen über den Client, die gewünschte Antwort und Authentifizierungsdaten.

Wichtige Request Header

Header Beschreibung Beispiel
Host Domainname des Servers (virtuelles Hosting) api.example.com
User-Agent Client-Informationen (Browser, Betriebssystem) Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Accept Erwartete Antwortformate (MIME-Types) application/json, text/plain, */*
Accept-Language Bevorzugte Sprache(n) de-DE,de;q=0.9,en;q=0.8
Accept-Encoding Unterstützte Komprimierungsmethoden gzip, deflate, br
Authorization Authentifizierungsdaten (Basic, Bearer Token) Bearer eyJhbGciOiJIUzI1NiIs...
Cookie Vorhandene Cookies sessionId=abc123; theme=dark
Content-Type Medientyp des Request-Bodys (bei POST/PUT) application/json
Content-Length Größe des Request-Bodys in Bytes 42
Referer Seite, von der der Client kommt https://www.google.com/search?q=api
Origin Ursprungsdomain (für CORS) https://example.com
If-Modified-Since Caching: Nur antworten, wenn neuer Wed, 21 Oct 2023 07:28:00 GMT
If-None-Match Caching: Nur antworten, wenn ETag nicht stimmt "abc123"
Tipp: Der User-Agent-Header ist oft der erste Anhaltspunkt bei der Fehlersuche – er zeigt, welcher Browser oder Client die Anfrage stellt und ob es sich um einen Crawler handelt.

Response Headers – Antwort-Header

Content-Type · Content-Length · Server · Set-Cookie · Location
HTTP/1.1 200 OK Content-Type: application/json Content-Length: 42 Server: nginx/1.18.0 Set-Cookie: session=abc123; Path=/; Secure; HttpOnly

Response Header werden vom Server an den Client gesendet. Sie enthalten Metadaten über die Antwort – wie Inhaltstyp, Größe, Server-Informationen und Cookies.

Wichtige Response Header

Header Beschreibung Beispiel
Content-Type Medientyp der Antwort application/json; charset=utf-8
Content-Length Größe der Antwort in Bytes 42
Server Server-Software nginx/1.18.0
Set-Cookie Cookie setzen session=abc123; Path=/; Secure; HttpOnly
Location Weiterleitungsziel (bei 3xx) https://example.com/neue-seite
ETag Prüfsumme der Ressource (Caching) "abc123"
Last-Modified Letztes Änderungsdatum Wed, 21 Oct 2023 07:28:00 GMT
Expires Ablaufzeit für Caching Thu, 01 Dec 2023 16:00:00 GMT
Cache-Control Caching-Richtlinien max-age=3600, public
Content-Encoding Komprimierungsmethode gzip
Content-Disposition Vorschlag für Dateinamen (Download) attachment; filename="report.pdf"
Retry-After Wartezeit bei 503 (Service Unavailable) 3600
Tipp: Der Server-Header kann aus Sicherheitsgründen deaktiviert oder gefälscht werden, um Angreifern keine Informationen über die verwendete Software zu geben.

Caching Headers – Cache-Control, ETag, Expires

Cache-Control · ETag · Expires · Last-Modified
Cache-Control: max-age=3600, public ETag: "abc123" Expires: Thu, 01 Dec 2023 16:00:00 GMT Last-Modified: Wed, 21 Oct 2023 07:28:00 GMT

Caching Header steuern, wie lange und unter welchen Bedingungen eine Antwort vom Client oder Proxy zwischengespeichert werden darf.

Cache-Control-Direktiven

Direktive Beschreibung
max-age=3600 Cache für 3600 Sekunden (1 Stunde)
no-cache Jede Anfrage prüfen (Cache validieren)
no-store Nicht cachen (keine Speicherung)
public Darf von jedem Cache gespeichert werden
private Nur für den Client (nicht für Shared Cache)
must-revalidate Vor Verwendung validieren
immutable Ressource ändert sich nie (für Hash-Files)
max-age=0, must-revalidate Immer validieren (ähnlich no-cache)
stale-while-revalidate Stale Inhalte während der Validierung ausliefern
Beispiele
# Statische Assets (1 Jahr cachen)
Cache-Control: public, max-age=31536000, immutable
# API-Antworten (kurz cachen)
Cache-Control: private, max-age=60
# ETag-basierte Validierung
ETag: W/"abc123"
Cache-Control: must-revalidate
# HTML-Seiten (kurz cachen, validieren)
Cache-Control: no-cache, must-revalidate
# Sensible Daten (gar nicht cachen)
Cache-Control: no-store, private
Tipp: Für statische Assets (CSS, JS, Bilder) mit Hash im Dateinamen verwenden Sie public, max-age=31536000, immutable. Für HTML-Seiten no-cache, must-revalidate. Für sensible Daten no-store, private.

Authentifizierung & Sicherheit – Authorization, Cookie, CORS

Authorization · Cookie · WWW-Authenticate · Access-Control-*
Authorization: Bearer eyJhbGciOiJIUzI1NiIs... Set-Cookie: session=abc123; Secure; HttpOnly; SameSite=Lax WWW-Authenticate: Bearer realm="api"

Sicherheits-Header steuern Authentifizierung, Cookies und Cross-Origin-Ressourcen-Freigabe (CORS).

Sicherheits-Header

Header Beschreibung Beispiel
Authorization Authentifizierungsdaten Bearer token, Basic dXNlcjpwYXNz
WWW-Authenticate Aufforderung zur Authentifizierung (401) Bearer realm="api"
Set-Cookie Cookie setzen (Response) session=abc; Secure; HttpOnly; SameSite=Lax; Max-Age=3600
Cookie Cookies senden (Request) session=abc; theme=dark
Access-Control-Allow-Origin Erlaubte Domains für CORS https://example.com, *
Access-Control-Allow-Methods Erlaubte HTTP-Methoden GET, POST, PUT, DELETE
Access-Control-Allow-Headers Erlaubte Headers Content-Type, Authorization
Access-Control-Allow-Credentials Credentials erlaubt true
Access-Control-Max-Age Preflight-Cache-Dauer 86400
Access-Control-Expose-Headers Headers für Client sichtbar X-Custom-Header
Beispiele
# JWT-Token senden
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
# Secure Cookie setzen
Set-Cookie: session=abc123; Path=/; Secure; HttpOnly; SameSite=Strict; Max-Age=3600
# CORS für API (mehrere Domains)
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Content-Type, Authorization
Access-Control-Allow-Credentials: true
Tipp: Für CORS bei eingeloggten Anfragen (Credentials) müssen Sie sowohl Access-Control-Allow-Credentials: true als auch einen expliziten Access-Control-Allow-Origin (kein *) setzen.

CORS – Cross-Origin Resource Sharing

Access-Control-Allow-Origin · Preflight · OPTIONS
Access-Control-Allow-Origin: https://example.com Access-Control-Allow-Methods: GET, POST, PUT, DELETE Access-Control-Allow-Headers: Content-Type, Authorization Access-Control-Max-Age: 86400

CORS (Cross-Origin Resource Sharing) ist ein Mechanismus, der einer Webseite einer Domain erlaubt, Ressourcen einer anderen Domain anzufordern. Die Header steuern, wer welche Anfragen stellen darf.

CORS-Header im Überblick

Header Beschreibung
Access-Control-Allow-Origin Erlaubte Domain (oder *)
Access-Control-Allow-Methods Erlaubte HTTP-Methoden
Access-Control-Allow-Headers Erlaubte Request-Header
Access-Control-Allow-Credentials Ob Credentials (Cookies) mitgesendet werden dürfen
Access-Control-Max-Age Wie lange der Preflight-Cache gültig ist (Sekunden)
Access-Control-Expose-Headers Header, die der Client lesen darf
Access-Control-Request-Method (Preflight) Gewünschte Methode
Access-Control-Request-Headers (Preflight) Gewünschte Header
Beispiele
# Preflight Request (OPTIONS)
OPTIONS /api/users HTTP/1.1
Host: api.example.com
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: Authorization
# Preflight Response
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Authorization
Access-Control-Max-Age: 86400
Tipp: Preflight-Anfragen (OPTIONS) werden automatisch vom Browser gesendet, wenn die Anfrage bestimmte Kriterien erfüllt (z.B. Custom Header, PUT/DELETE). Nutzen Sie Access-Control-Max-Age, um die Anzahl der Preflight-Requests zu reduzieren.

Security Headers – HSTS, CSP, X-Frame-Options

Strict-Transport-Security · Content-Security-Policy · X-Frame-Options
Strict-Transport-Security: max-age=31536000; includeSubDomains Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' X-Frame-Options: DENY X-Content-Type-Options: nosniff

Security Header schützen Webanwendungen vor häufigen Angriffen wie Clickjacking, XSS, MIME-Typ-Exploits und SSL-Stripping.

Wichtige Security Header

Header Beschreibung Empfehlung
Strict-Transport-Security HSTS – Erzwingt HTTPS für eine bestimmte Zeit max-age=31536000; includeSubDomains; preload
Content-Security-Policy CSP – Erlaubte Quellen für Skripte, Styles, Bilder etc. default-src 'self'; script-src 'self'
X-Frame-Options Verhindert Clickjacking (Einbettung in Frame) DENY oder SAMEORIGIN
X-Content-Type-Options Verhindert MIME-Typ-Sniffing nosniff
X-XSS-Protection XSS-Schutz (veraltet, CSP ist besser) 0 (oder 1; mode=block)
Referrer-Policy Kontrolliert die Weiterleitung von Referrer-Informationen strict-origin-when-cross-origin
Permissions-Policy Kontrolliert den Zugriff auf Browser-Features (z.B. Geolocation) geolocation=()
Beispiele
# HSTS – HTTPS erzwingen
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
# CSP – Nur eigene Ressourcen erlauben
Content-Security-Policy: default-src 'self'; img-src 'self' https://cdn.example.com; script-src 'self' 'unsafe-inline'
# Clickjacking-Schutz
X-Frame-Options: DENY
# MIME-Type-Schutz
X-Content-Type-Options: nosniff
# Referrer-Policy
Referrer-Policy: strict-origin-when-cross-origin
Tipp: Verwenden Sie CSP (Content-Security-Policy) im report-only-Modus, um zu testen, welche Ressourcen geblockt werden, bevor Sie es aktivieren. Der Report-URI kann an einen Endpoint gesendet werden.

HTTP Header Kategorien

Request Vom Client gesendet
User-Agent, Accept, Authorization
Response Vom Server gesendet
Content-Type, Server, Set-Cookie
Cache Caching-Steuerung
Cache-Control, ETag, Expires
Security Sicherheits-Header
HSTS, CSP, X-Frame-Options
CORS Cross-Origin
Access-Control-Allow-Origin
Auth Authentifizierung
Authorization, Cookie

Quick Summary

Authorization
Auth-Token
Content-Type
Inhaltstyp
Cache-Control
Caching
Set-Cookie
Cookie setzen
Access-Control-*
CORS
CSP
Sicherheit
Content-Type: application/json · Cache-Control: max-age=3600 · Authorization: Bearer token