Die Formate von HTTP-Anfragen und HTTP-Antworten sind ähnlich und haben beide die folgende Struktur:
Beginnen Sie mit der Statuszeile + CRLF (Wagenrücklauf und Zeilenvorschub).
Null- oder mehrzeiliges Header-Modul+CRLF
Eine Leerzeile, z. B. CRLF
Optionaler Nachrichtentext wie Datei, Abfragedaten, Abfrageausgabe
Ein Server-Antwortheader sieht beispielsweise so aus:
HTTP/1.1 200 OKContent-Type: text/htmlHeader2: ...HeaderN: ... (Leerzeile)<!doctype ...><html><head>...</head><body> ... </body></html>
Die Statuszeile enthält die HTTP-Version, einen Statuscode und die dem Statuscode entsprechende Kurznachricht.
In der folgenden Tabelle sind die HTTP-Statuscodes und die damit verbundenen Meldungen aufgeführt, die möglicherweise vom Server zurückgegeben werden:
Statuscode | Information | beschreiben |
---|---|---|
100 | Weitermachen | Nur ein Teil der Anfrage wird vom Server empfangen, aber solange er nicht vom Server abgelehnt wird, setzt der Client die Anfrage fort. |
101 | Protokolle wechseln | Server-Switch-Protokoll |
200 | OK | Anfrage bestätigt |
201 | Erstellt | Die Anfrage ist abgeschlossen und die neue Ressource wird erstellt |
202 | Akzeptiert | Die Anfrage wurde angenommen, aber nicht bearbeitet |
203 | Nicht maßgebliche Informationen | |
204 | Kein Inhalt | |
205 | Inhalt zurücksetzen | |
206 | Teilinhalt | |
300 | Mehrere Auswahlmöglichkeiten | Eine Hyperlink-Tabelle. Benutzer können einen Hyperlink auswählen und darauf zugreifen. Es werden maximal 5 Hyperlinks unterstützt. |
301 | Dauerhaft verschoben | Die angeforderte Seite wurde auf eine neue URL verschoben |
302 | Gefunden | Die angeforderte Seite wurde vorübergehend auf eine neue URL verschoben |
303 | Siehe Andere | Die angeforderte Seite ist unter einer anderen URL zu finden |
304 | Nicht geändert | |
305 | Verwenden Sie Proxy | |
306 | Unbenutzt | Dieser Statuscode wird nicht mehr verwendet, der Statuscode bleibt jedoch erhalten |
307 | Temporäre Weiterleitung | Die angeforderte Seite wurde vorübergehend auf eine neue URL verschoben |
400 | Ungültige Anforderung | Der Server erkennt die Anfrage nicht |
401 | Nicht autorisiert | Für die angeforderte Seite sind ein Benutzername und ein Passwort erforderlich |
402 | Zahlung erforderlich | Dieser Statuscode kann noch nicht verwendet werden |
403 | Verboten | Der Zugriff auf die angeforderte Seite ist untersagt |
404 | Nicht gefunden | Der Server kann die angeforderte Seite nicht finden |
405 | Methode nicht zulässig | Die in der Anfrage angegebene Methode ist nicht zulässig |
406 | Nicht akzeptabel | Der Server kann nur eine Antwort erstellen, die für den Client nicht akzeptabel ist |
407 | Proxy-Authentifizierung erforderlich | Ein Proxyserver muss authentifiziert werden, bevor Anforderungen bedient werden können |
408 | Zeitüberschreitung anfordern | Die Anforderungszeit überschritt die Zeit, die der Server warten konnte, und die Verbindung wurde getrennt. |
409 | Konflikt | Es liegt ein Konflikt in der Anfrage vor |
410 | Gegangen | Die angeforderte Seite ist nicht mehr verfügbar |
411 | Länge erforderlich | „Content-Length“ ist nicht definiert, der Server weigerte sich, die Anfrage anzunehmen |
412 | Voraussetzung fehlgeschlagen | Die angeforderte Vorbedingung wurde vom Server als falsch bewertet |
413 | Anforderungselement zu groß | Der Server weigerte sich, die Anfrage anzunehmen, da die angeforderte Entität zu groß war. |
414 | Anfrage-URL zu lang | Der Server weigerte sich, die Anfrage anzunehmen, da die URL zu lang war. Bei der Umwandlung einer „POST“-Anfrage in eine „GET“-Anfrage erscheint häufig eine große Menge an Abfrageinformationen. |
415 | Nicht unterstützter Medientyp | Der Server weigerte sich, die Anfrage anzunehmen, da der Medientyp nicht unterstützt wird |
417 | Die Erwartung ist fehlgeschlagen | |
500 | interner Serverfehler | Die Anfrage war unvollständig und der Server ist auf einen unerwarteten Zustand gestoßen. |
501 | Nicht implementiert | Die Anfrage ist unvollständig und der Server stellt nicht die erforderliche Funktionalität bereit |
502 | Schlechtes Gateway | Die Anfrage war unvollständig und der Server hat eine ungültige Antwort vom Upstream-Server erhalten. |
503 | Dienst nicht verfügbar | Die Anfrage ist unvollständig und der Server wird vorübergehend neu gestartet oder heruntergefahren. |
504 | Gateway-Timeout | Gateway-Timeout |
505 | HTTP-Version wird nicht unterstützt | Der Server unterstützt die angegebene HTTP-Version nicht |
In der folgenden Tabelle sind die Methoden aufgeführt, die zum Festlegen von Statuscodes in der HttpServletResponse-Klasse verwendet werden:
SN | Methode und Beschreibung |
---|---|
1 | public void setStatus (int statusCode) Diese Methode kann einen beliebigen Statuscode festlegen. Wenn Ihre Antwort einen speziellen Statuscode und ein Dokument enthält, rufen Sie unbedingt die setStatus-Methode auf, bevor Sie etwas mit dem PrintWriter zurückgeben |
2 | public void sendRedirect(String url) Diese Methode generiert eine 302-Antwort und einen Location- Header, um der URL ein neues Dokument mitzuteilen. |
3 | public void sendError(int code, String message) Diese Methode fügt automatisch einen Statuscode (normalerweise 404) und eine kurze Nachricht in das HTML-Dokument ein und sendet es an den Client zurück. |
Das folgende Beispiel sendet einen 407-Fehlercode an den Browser und der Browser meldet Ihnen „Authentifizierung erforderlich!!!“.
<html><head><title>HTTP-Statuscode festlegen</title></head><body><% // Fehlercode festlegen und den Grund erläutern Response.sendError(407, „Authentifizierung erforderlich!!!“ ) ; %></body></html>
Wenn Sie die obige JSP-Seite besuchen, erhalten Sie die folgenden Ergebnisse:
Sie können auch versuchen, andere Statuscodes zu verwenden, um zu sehen, ob Sie unerwartete Ergebnisse erhalten.