HTTP - żądania

Klient HTTP wysyła żądanie HTTP do serwera w postaci komunikatu żądania, który zawiera następujący format:


     
  • A Request-line
  • Zero or more header (General|Request|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 żądania HTTP.

Linia zapytań

Wiersz żądania zaczyna się od tokenu metody, po którym następuje identyfikator URI żądania i wersja protokołu, a kończy się na CRLF. Elementy oddzielone są spacjami SP.

Request-Line = Method SP Request-URI SP HTTP-Version CRLF

Omówmy każdą z części wymienionych w Request-Line.

Metoda żądania

Prośba method wskazuje metodę, która ma zostać wykonana na zasobie określonym przez dane Request-URI. W metodzie rozróżniana jest wielkość liter i zawsze należy ją podawać wielkimi literami. W poniższej tabeli wymieniono wszystkie obsługiwane metody w protokole HTTP / 1.1.

SN Metoda i opis
1 GET

Metoda GET służy do pobierania informacji z danego serwera przy użyciu podanego URI. Żądania korzystające z GET powinny tylko pobierać dane i nie powinny mieć żadnego innego wpływu na dane.

2 HEAD

To samo co GET, ale przenosi tylko wiersz stanu i sekcję nagłówka.

3 POST

Żądanie POST służy do wysyłania danych na serwer, na przykład informacji o kliencie, przesyłania plików itp. Za pomocą formularzy HTML.

4 PUT

Zastępuje wszystkie bieżące reprezentacje zasobu docelowego przesłaną treścią.

5 DELETE

Usuwa wszystkie bieżące reprezentacje zasobu docelowego podane przez identyfikator URI.

6 CONNECT

Ustanawia tunel do serwera identyfikowanego przez dany identyfikator URI.

7 OPTIONS

Opisz opcje komunikacji dla zasobu docelowego.

8 TRACE

Wykonuje test zwrotny pętli komunikatów wraz ze ścieżką do zasobu docelowego.

Identyfikator URI żądania

Identyfikator URI żądania jest jednolitym identyfikatorem zasobu i identyfikuje zasób, do którego należy zastosować żądanie. Poniżej przedstawiono najczęściej używane formularze do określenia identyfikatora URI:

Request-URI = "*" | absoluteURI | abs_path | authority
 
SN Metoda i opis
1 Gwiazdka *jest używany, gdy żądanie HTTP nie dotyczy określonego zasobu, ale samego serwera i jest dozwolone tylko wtedy, gdy zastosowana metoda niekoniecznie ma zastosowanie do zasobu. Na przykład:

OPTIONS * HTTP/1.1

2 Plik absoluteURIjest używany, gdy żądanie HTTP jest kierowane do serwera proxy. Proxy jest proszone o przesłanie żądania lub usługi z ważnej pamięci podręcznej i zwrócenie odpowiedzi. Na przykład:

GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1

3 Najpopularniejszą formą identyfikatora URI żądania jest ta, która służy do identyfikowania zasobu na serwerze pochodzenia lub bramie. Na przykład klient, który chciałby pobrać zasób bezpośrednio z serwera pochodzenia, utworzyłby połączenie TCP z portem 80 hosta „www.w3.org” i wysłałby następujące wiersze:

GET /pub/WWW/TheProject.html HTTP/1.1

Host: www.w3.org

Zwróć uwagę, że ścieżka bezwzględna nie może być pusta; jeśli nie ma go w oryginalnym URI, MUSI być podany jako „/” (root serwera).

Żądanie pól nagłówka

Przestudiujemy General-header i Entity-header w osobnym rozdziale, kiedy poznamy pola nagłówka HTTP. Na razie sprawdźmy, jakie są pola nagłówka żądania.

Pola nagłówka żądania umożliwiają klientowi przekazanie dodatkowych informacji o żądaniu oraz o samym kliencie do serwera. Te pola działają jako modyfikatory żądania. Oto lista niektórych ważnych pól nagłówka żądania, których można użyć w zależności od wymagania:

  • Accept-Charset

  • Accept-Encoding

  • Accept-Language

  • Authorization

  • Expect

  • From

  • Host

  • If-Match

  • If-Modified-Since

  • If-None-Match

  • If-Range

  • If-Unmodified-Since

  • Max-Forwards

  • Proxy-Authorization

  • Range

  • Referer

  • TE

  • User-Agent

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

Przykłady wiadomości żądania

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

GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Tutaj nie wysyłamy żadnych danych żądania do serwera, ponieważ pobieramy zwykłą stronę HTML z serwera. Connection to nagłówek ogólny, a pozostałe nagłówki to nagłówki żądań. Poniższy przykład pokazuje, jak wysłać dane formularza na serwer przy użyciu treści komunikatu żądania:

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

licenseID=string&content=string&/paramsXML=string

Tutaj podany adres URL /cgi-bin/process.cgi zostanie użyty do przetworzenia przekazanych danych i odpowiednio, zostanie zwrócona odpowiedź. Tutajcontent-type informuje serwer, że przekazywane dane to proste dane formularza internetowego i lengthbędzie rzeczywistą długością danych umieszczonych w treści wiadomości. Poniższy przykład pokazuje, jak możesz przekazać zwykły XML na swój serwer sieciowy:

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://clearforest.com/">string</string>