Dieses Material ist Teil der Reihe „Einführung in die Unternehmensentwicklung“. Vorherige Artikel:
Hallo! Heute lernen wir die Protokolle HTTP und HTTPS kennen. Aber lassen Sie uns zunächst einen Punkt klarstellen: Wir sprechen über Protokolle zum Senden von Daten über ein Netzwerk auf der Anwendungsebene des OSI-Modells. Sie erinnern sich vielleicht, dass wir das OSI-Modell in einem der vorherigen Artikel kennengelernt haben. Wenn Sie sich nicht daran erinnern, finden Sie es hier .

Was ist ein Datenkommunikationsprotokoll?
Dies nennen wir das vereinbarte Regelwerk, das es Entwicklern verschiedener Dienste ermöglicht, Informationen in einem Format zu senden, das andere verstehen können. Sie können beispielsweise Google Chrome verwenden, um Informationen sowohl von Facebook als auch von Twitter abzurufen, da die Entwickler diese über das Standard-HTTP-Protokoll senden, das Ihrem Browser die Verarbeitung ermöglicht. Einheitliche Regeln sind für die Leute, die den Serverteil entwickeln, sehr praktisch: Es gibt viele Bibliotheken, die Informationen für Sie konvertieren und über das entsprechende Protokoll senden können. HTTP wurde ursprünglich als Protokoll zum Senden von HTML-Seiten konzipiert. Auf diese Weise wurde es lange Zeit verwendet, aber jetzt verwenden Programmierer es häufig, um sowohl Strings als auch Mediendateien zu senden. Im Allgemeinen ist dieses Protokoll allgemein akzeptiert und vielseitig und sehr einfach zu verwenden. Und jetzt untersuchen wir, wie man es verwendet.Die Struktur von HTTP
Wir sollten gleich darauf hinweisen, dass das HTTP-Protokoll nur aus Text besteht. Was uns am meisten interessiert, ist die Struktur dieses Textes. Jede Nachricht besteht aus drei Teilen:- Startlinie – Hier werden einige Verwaltungsdaten definiert.
- Header – Diese beschreiben die Nachrichtenparameter.
- Text – Dies ist der Inhalt der Nachricht. Der Textkörper muss durch eine Leerzeile von den Kopfzeilen getrennt werden.
So sieht eine einfache HTTP-Anfrage aus:
GET / HTTP/1.1
Host: codegym.cc
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
Die Startlinie zeigt an:
- GET – Die Methode der Anfrage
- / – Der Pfad der Anfrage
- HTTP/1.1 – Die Protokollversion
- Host – Der Host, an den die Anfrage gerichtet ist
- User-Agent – Der Client, der die Anfrage sendet
https://cdn.codegym.cc/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2
Dabei ist codegym.cc der Host, /send der Pfad der Anfrage und ? ist ein Trennzeichen, das angibt, dass die Abfrageparameter folgen. Am Ende werden Schlüssel-Wert-Paare („key=value“) aufgelistet, getrennt durch ein kaufmännisches Und. POST – Diese Methode veröffentlicht Informationen auf dem Server. Eine POST-Anfrage kann verschiedene Arten von Informationen senden: Parameter als „Schlüssel=Wert“-Paare, JSON, HTML-Code oder sogar Dateien. Alle Informationen werden im Nachrichtentext gesendet. Zum Beispiel:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: codegym.cc
{
"Id": 12345,
"User": "John"
}
Die Anfrage wird an codegym.cc/user/create/json gesendet und die Protokollversion ist HTTP/1.1. „Akzeptieren“ gibt das Antwortformat an, das der Client erwartet. „Content-Type“ gibt das Format des in der Anfrage gesendeten Nachrichtentexts an. „Content-Length“ ist die Anzahl der Zeichen im Text. Eine HTTP-Anfrage kann viele verschiedene Header enthalten. Weitere Informationen finden Sie in der Spezifikation des Protokolls .
HTTP-Antworten
Nach Erhalt einer Anfrage verarbeitet der Server diese und sendet eine Antwort an den Client:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98
<html>
<head>
<title>An Example Page</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
Die Startzeile der Antwort enthält die Protokollversion (HTTP/1.1), den Statuscode (200) und die Statusbeschreibung (OK). Die Kopfzeilen enthalten die Art und Länge des Inhalts. Der Antworttext enthält HTML-Code, den der Browser als HTML-Seite rendert.
Antwortstatuscodes
Was den Nachrichtentext und die Kopfzeilen betrifft, ist alles klar, aber wir sollten ein paar Worte zu den Statuscodes sagen. Antwortstatuscodes sind immer dreistellig. Die erste Ziffer des Codes gibt die Kategorie der Antwort an:- 1xx – Zur Information. Die Anfrage ist eingegangen. Der Server ist bereit zum Fortfahren.
- 2xx – Erfolgreich. Die Anfrage wurde angenommen, verstanden und bearbeitet.
- 3xx – Umleitung. Zur Bearbeitung der Anfrage müssen zusätzliche Aktionen durchgeführt werden.
- 4xx – Clientfehler. Die Anfrage enthält Fehler oder entspricht nicht dem Protokoll.
- 5xx – Serverfehler. Die Anfrage wurde korrekt verfasst, der Server konnte sie jedoch nicht verarbeiten.
- 200 OK – Die Anfrage wurde empfangen und erfolgreich verarbeitet.
- 201 Erstellt – Die Anfrage wurde empfangen und erfolgreich verarbeitet, was zur Erstellung einer neuen Ressource oder Instanz führte.
- 301 Permanent verschoben – Die angeforderte Ressource wurde dauerhaft verschoben. Nachfolgende Anfragen sollten unter Verwendung der neuen Adresse erfolgen.
- 307 Temporäre Umleitung – Die Ressource wurde vorübergehend verschoben. Derzeit ist der Zugriff über die automatische Weiterleitung möglich.
- 403 Verboten – Die Anfrage wurde verstanden, es ist jedoch eine Autorisierung erforderlich.
- 404 Nicht gefunden – Der Server hat die Ressource unter dieser Adresse nicht gefunden.
- 501 Nicht implementiert – Der Server unterstützt nicht die Funktionalität, die zum Beantworten der Anfrage erforderlich ist.
- 505 HTTP-Version nicht unterstützt – Der Server unterstützt die angegebene Version des HTTP-Protokolls nicht.
GO TO FULL VERSION