HTTP - odpowiedzi

Po otrzymaniu i zinterpretowaniu komunikatu żądania serwer odpowiada komunikatem odpowiedzi HTTP:


     
  • 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

W poniższych sekcjach wyjaśniono każdą z jednostek używanych w komunikacie odpowiedzi HTTP.

Wiadomość Status-Line

Linia statusu składa się z wersji protokołu, po której następuje numeryczny kod statusu i powiązana fraza tekstowa. Elementy oddzielone są spacjami SP.

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

Wersja HTTP

Serwer obsługujący protokół HTTP w wersji 1.1 zwróci następujące informacje o wersji:

HTTP-Version = HTTP/1.1

Kod statusu

Element Status-Code to 3-cyfrowa liczba całkowita, gdzie pierwsza cyfra Status-Code określa klasę odpowiedzi, a ostatnie dwie cyfry nie pełnią żadnej roli w kategoryzacji. Pierwsza cyfra ma 5 wartości:

SN Kod i opis
1 1xx: Informational

Oznacza to, że żądanie zostało odebrane i proces jest kontynuowany.

2 2xx: Success

Oznacza to, że działanie zostało pomyślnie odebrane, zrozumiane i zaakceptowane.

3 3xx: Redirection

Oznacza to, że należy podjąć dalsze działania w celu uzupełnienia wniosku.

4 4xx: Client Error

Oznacza to, że żądanie zawiera nieprawidłową składnię lub nie może zostać spełnione.

5 5xx: Server Error

Oznacza to, że serwer nie spełnił pozornie ważnego żądania.

Kody stanu HTTP można rozszerzać, a aplikacje HTTP nie muszą rozumieć znaczenia wszystkich zarejestrowanych kodów stanu. Lista wszystkich kodów statusu została podana w oddzielnym rozdziale w celach informacyjnych.

Pola nagłówka odpowiedzi

Przestudiujemy General-header i Entity-header w osobnym rozdziale, kiedy nauczymy się pól nagłówka HTTP. Na razie sprawdźmy, jakie są pola nagłówka odpowiedzi.

Pola nagłówka odpowiedzi umożliwiają serwerowi przekazanie dodatkowych informacji o odpowiedzi, których nie można umieścić w wierszu stanu. Te pola nagłówka zawierają informacje o serwerze i dalszym dostępie do zasobu identyfikowanego przez identyfikator URI żądania.

  • Accept-Ranges

  • Age

  • ETag

  • Location

  • Proxy-Authenticate

  • Retry-After

  • Server

  • Vary

  • WWW-Authenticate

Możesz wprowadzić własne pola na wypadek, gdybyś miał napisać własnego klienta i serwer WWW.

Przykłady wiadomości odpowiedzi

Teraz połączmy to wszystko razem, aby utworzyć odpowiedź HTTP na żądanie pobrania pliku hello.htm strona z serwera WWW działającego w witrynie tutorialspoint.com

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>

Poniższy przykład przedstawia komunikat odpowiedzi HTTP zawierający stan błędu, gdy serwer WWW nie może znaleźć żądanej strony:

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>

Poniżej znajduje się przykład komunikatu odpowiedzi HTTP pokazującego stan błędu, gdy serwer WWW napotkał nieprawidłową wersję HTTP w danym żądaniu HTTP:

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>