HTTP oder HyperText Transfer Protocol ist ein grundlegendes Protokoll zur Übertragung von Hypermedia-Dokumenten wie HTML-Seiten über das Internet. Es arbeitet als Anfrage-Antwort-Protokoll in einem Client-Server-Modell. Clients, typischerweise Webbrowser, initiieren Anfragen an Server, um Ressourcen wie Webseiten oder Daten abzurufen. Server reagieren auf diese Anfragen, indem sie die angeforderten Ressourcen bereitstellen oder einen Fehler anzeigen, wenn die Ressource nicht gefunden werden kann. HTTP funktioniert über TCP/IP, wobei die Kommunikation über Port 80 für Standard-HTTP und Port 443 für HTTPS (HTTP über SSL/TLS) erfolgt.
Der Arbeitsprozess von HTTP umfasst mehrere wichtige Schritte:
- Request: Ein Client sendet eine HTTP-Anfrage an einen Server. Die Anfrage umfasst eine Methode (z. B. GET, POST, PUT, DELETE), die die auszuführende Aktion angibt, eine URL zur Identifizierung der Ressource und optionale Header mit zusätzlichen Informationen wie Inhaltstyp oder Authentifizierungsdaten.
- Routing: Beim Empfang der Anfrage leiten Zwischengeräte wie Router sie basierend auf der Ziel-URL an den entsprechenden Server weiter.
- Verarbeitung: Der Server verarbeitet die Anfrage, indem er die HTTP-Methode, Header und optionalen Nachrichtentext (für Methoden wie POST oder PUT) interpretiert. Es ruft die angeforderte Ressource ab oder führt die angeforderte Aktion aus.
- Response: Der Server generiert eine HTTP-Antwort, die einen Statuscode (der den Erfolg oder Misserfolg der Anfrage anzeigt), Antwortheader mit Metadaten zur Antwort (z. B. Inhaltstyp und Cache-Steuerung) und einen optionalen Antworttext mit den angeforderten Informationen enthält Ressource oder Fehlermeldung.
- Zustellung: Der Server sendet die HTTP-Antwort über die hergestellte TCP-Verbindung an den Client zurück.
- Rendering: Der Client empfängt die Antwort, interpretiert die Daten basierend auf dem Inhaltstyp (z. B. HTML, JSON) und rendert sie, damit der Benutzer sie anzeigen oder damit interagieren kann.
Einfaches HTTP funktioniert, indem es eine Verbindung zwischen einem Client und einem Server herstellt, eine Anfrage für eine bestimmte Ressource sendet und eine Antwort empfängt, die die angeforderte Ressource enthält oder einen Fehler anzeigt. Es handelt sich um ein zustandsloses Protokoll, was bedeutet, dass jeder Anfrage-Antwort-Zyklus unabhängig ist und keine Informationen über vergangene Interaktionen speichert. Aufgrund dieser Einfachheit eignet sich HTTP für eine Vielzahl von Anwendungen, vom Abrufen von Webseiten bis zum Datenaustausch zwischen Clients und Servern.
HTTP-Methoden definieren die Aktionen, die Clients für durch URLs identifizierte Ressourcen ausführen können. Zu den primären HTTP-Methoden gehören:
- GET: Ruft Daten von einer angegebenen Ressource ab.
- POST: Sendet zu verarbeitende Daten an eine angegebene Ressource.
- PUT: Aktualisiert eine Ressource oder erstellt eine neue Ressource, wenn diese nicht vorhanden ist.
- DELETE: Löscht eine angegebene Ressource.
- HEAD: Ruft Header ab, die mit denen der GET-Methode identisch sind, ohne den Antworttext.
- OPTIONS: Beschreibt die Kommunikationsoptionen für die Zielressource.
- PATCH: Wendet teilweise Änderungen auf eine Ressource an.
Jede Methode verfügt über eine spezifische Semantik und Nutzungsszenarien, die es Clients ermöglichen, je nach gewünschter Aktion auf unterschiedliche Weise mit Servern zu interagieren. Beispielsweise wird GET zum Abrufen von Daten, POST zum Senden von Daten, PUT zum Aktualisieren oder Erstellen von Ressourcen und DELETE zum Entfernen von Ressourcen vom Server verwendet.
HTTP GET ist eine Methode, mit der Clients Daten von einem Server anfordern. Wenn ein Client eine HTTP-GET-Anfrage sendet, enthält diese normalerweise eine URL, die die Ressource angibt, die er abrufen möchte. Der Server verarbeitet die Anfrage und antwortet mit der angeforderten Ressource, beispielsweise einem HTML-Dokument, einem Bild oder anderen Datentypen. GET-Anfragen gelten als „sicher“ und „idempotent“, was bedeutet, dass sie den Serverstatus nicht ändern sollten und wiederholt werden können, ohne dass es zu unterschiedlichen Ergebnissen kommt. Diese Methode wird häufig zum Abrufen von Webseiten, Bildern und anderen statischen Inhalten von Webservern verwendet.