HTTP - Antworten

Nach dem Empfang und der Interpretation einer Anforderungsnachricht antwortet ein Server mit einer HTTP-Antwortnachricht:

  • A Status-line
  • Zero or more header (General|Response|Entity) fields followed by CRLF
  • An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
  • Optionally a message-body

In den folgenden Abschnitten werden alle in einer HTTP-Antwortnachricht verwendeten Entitäten erläutert.

Nachrichtenstatuszeile

Eine Statuszeile besteht aus der Protokollversion, gefolgt von einem numerischen Statuscode und der zugehörigen Textphrase. Die Elemente sind durch Leerzeichen SP getrennt.

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

HTTP-Version

Ein Server, der HTTP Version 1.1 unterstützt, gibt die folgenden Versionsinformationen zurück:

HTTP-Version = HTTP/1.1

Statuscode

Das Statuscode-Element ist eine dreistellige Ganzzahl, wobei die erste Ziffer des Statuscodes die Antwortklasse definiert und die letzten beiden Ziffern keine Kategorisierungsrolle haben. Es gibt 5 Werte für die erste Ziffer:

SN Code und Beschreibung
1 1xx: Informational

Dies bedeutet, dass die Anfrage empfangen wurde und der Prozess fortgesetzt wird.

2 2xx: Success

Dies bedeutet, dass die Aktion erfolgreich empfangen, verstanden und akzeptiert wurde.

3 3xx: Redirection

Dies bedeutet, dass weitere Maßnahmen ergriffen werden müssen, um die Anforderung abzuschließen.

4 4xx: Client Error

Dies bedeutet, dass die Anforderung eine falsche Syntax enthält oder nicht erfüllt werden kann.

5 5xx: Server Error

Dies bedeutet, dass der Server eine scheinbar gültige Anforderung nicht erfüllt hat.

HTTP-Statuscodes sind erweiterbar und HTTP-Anwendungen sind nicht erforderlich, um die Bedeutung aller registrierten Statuscodes zu verstehen. Eine Liste aller Statuscodes wurde in einem separaten Kapitel als Referenz angegeben.

Antwortheaderfelder

Wir werden General-Header und Entity-Header in einem separaten Kapitel untersuchen, wenn wir HTTP-Header-Felder lernen. Lassen Sie uns zunächst überprüfen, welche Antwortheaderfelder vorhanden sind.

In den Antwortheaderfeldern kann der Server zusätzliche Informationen über die Antwort übergeben, die nicht in die Statuszeile eingefügt werden können. Diese Headerfelder enthalten Informationen zum Server und zum weiteren Zugriff auf die durch den Request-URI angegebene Ressource.

  • Accept-Ranges

  • Age

  • ETag

  • Location

  • Proxy-Authenticate

  • Retry-After

  • Server

  • Vary

  • WWW-Authenticate

Sie können Ihre benutzerdefinierten Felder einführen, falls Sie Ihren eigenen benutzerdefinierten Webclient und Server schreiben möchten.

Beispiele für Antwortnachrichten

Lassen Sie uns nun alles zusammenfügen, um eine HTTP-Antwort für eine Anforderung zum Abrufen der zu bilden hello.htm Seite vom Webserver, der auf tutorialspoint.com ausgeführt wird

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed
<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>

Das folgende Beispiel zeigt eine HTTP-Antwortnachricht mit einer Fehlerbedingung, wenn der Webserver die angeforderte Seite nicht finden konnte:

HTTP/1.1 404 Not Found
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Connection: Closed
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
   <title>404 Not Found</title>
</head>
<body>
   <h1>Not Found</h1>
   <p>The requested URL /t.html was not found on this server.</p>
</body>
</html>

Im Folgenden finden Sie ein Beispiel für eine HTTP-Antwortnachricht, die einen Fehlerzustand anzeigt, wenn der Webserver in der angegebenen HTTP-Anforderung auf eine falsche HTTP-Version gestoßen ist:

HTTP/1.1 400 Bad Request
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Content-Type: text/html; charset=iso-8859-1
Connection: Closed
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
   <title>400 Bad Request</title>
</head>
<body>
   <h1>Bad Request</h1>
   <p>Your browser sent a request that this server could not understand.</p>
   <p>The request line contained invalid characters following the protocol string.</p>
</body>
</html>