CodeGym /Java-Blog /Random-DE /Teil 3. HTTP/HTTPS
John Squirrels
Level 41
San Francisco

Teil 3. HTTP/HTTPS

Veröffentlicht in der Gruppe Random-DE
Dieses Material ist Teil der Reihe „Einführung in die Unternehmensentwicklung“. Vorherige Artikel: Teil 3. HTTP/HTTPS – 1Hallo! 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:
  1. Startlinie – Hier werden einige Verwaltungsdaten definiert.
  2. Header – Diese beschreiben die Nachrichtenparameter.
  3. Text – Dies ist der Inhalt der Nachricht. Der Textkörper muss durch eine Leerzeile von den Kopfzeilen getrennt werden.
Das HTTP-Protokoll wird verwendet, um Anfragen an einen Server zu senden und Antworten vom Server zu empfangen. Die Parameter von Anfragen und Antworten unterscheiden sich geringfügig.

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
Dann kommen die Überschriften:
  • Host – Der Host, an den die Anfrage gerichtet ist
  • User-Agent – ​​Der Client, der die Anfrage sendet
Der Nachrichtentext fehlt. Bei einer HTTP-Anfrage sind lediglich die Startzeile und der „Host“-Header erforderlich. Schauen wir uns nun alles Schritt für Schritt an. Eine HTTP-Anfrage muss eine Methode enthalten. Es gibt neun davon: GET, POST, PUT, OPTIONS, HEAD, PATCH, DELETE, TRACE, CONNECT. Am häufigsten sind GET und POST. Diese beiden Methoden werden zunächst ausreichen. GET – Diese Methode fordert Inhalte vom Server an. Dementsprechend haben Anfragen mit der GET-Methode keinen Nachrichtentext. Bei Bedarf können Sie jedoch Parameter über den Pfad (in der Startzeile) im folgenden Format übergeben:

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.
Die zweite und dritte Ziffer im Code geben eine spezifischere Antwort an. Zum Beispiel:
  • 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.
Zusätzlich zum Antwortstatuscode wird auch eine Statusbeschreibung gesendet. Dies hilft zu klären, was jeder spezifische Status bedeutet. Das HTTP-Protokoll ist sehr praktisch: Es stellt eine Vielzahl von Headern zur Verfügung, mit denen Sie die Kommunikation zwischen Client und Server sehr flexibel gestalten können. Eine vollständige Betrachtung aller Anforderungs- und Antwortheader, Anforderungsmethoden und Antwortstatuscodes würde für einen einzelnen Artikel zu viel sein. Bei Bedarf können Sie die offizielle Spezifikation des Protokolls lesen, das alle Nuancen beschreibt. Es ist üblich, das HTTP-Protokoll auf Port 80 zu verwenden. Wenn Sie also eine URL sehen, die mit Port 80 endet, können Sie sicher sein, dass Sie HTTP verwenden müssen, um darauf zuzugreifen. Mit der Weiterentwicklung der Technologie und der zunehmenden Übermittlung personenbezogener Daten über das Internet wurde es notwendig, darüber nachzudenken, wie die vom Client an den Server gesendeten Informationen zusätzlich geschützt werden können. Das Ergebnis dieser Überlegungen war das HTTPS-Protokoll.

Der Unterschied zwischen HTTPS und HTTP

Von der Syntax her ist HTTPS identisch mit dem HTTP-Protokoll. Das heißt, es werden dieselben Startzeilen und Überschriften verwendet. Die einzigen Unterschiede sind die zusätzliche Verschlüsselung und der Standardport (443) . HTTPS wird zwischen HTTP und TCP verschlüsselt, also zwischen der Anwendungs- und der Transportschicht. Wenn Sie vergessen haben, was das bedeutet, lesen Sie den Artikel zum OSI-Modell . Der heutige Verschlüsselungsstandard ist TLS. Wir werden nicht zu sehr auf dieses Thema eingehen, aber bedenken Sie, dass die Verschlüsselung erfolgt, bevor die Informationen die Transportschicht erreichen. Bei HTTPS werden absolut alle Informationen verschlüsselt, mit Ausnahme des Hosts und Ports, an den die Anfrage gesendet wird. Die Umstellung eines Servers auf die Verwendung des HTTPS-Protokolls anstelle von HTTP erfordert keine Änderung des Servercodes. Diese Funktion ist in Servlet-Containern aktiviert, worauf wir in den folgenden Artikeln eingehen werden. Und das ist alles für heute. Eigentlich warte einen Moment. Um einige HTTP-Anfragen zu erhalten, öffnen Sie Google Chrome, drücken Sie F12 und wählen Sie die Registerkarte „Netzwerk“. Alle von Ihrem Browser gesendeten/empfangenen Anfragen und Antworten werden hier angezeigt. Teil 4. Die Grundlagen von Maven. Teil 5. Servlets und die Java Servlet API. Schreiben einer einfachen Webanwendung Teil 6. Servlet-Container Teil 7. Einführung in das MVC-Muster (Model-View-Controller).
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION