Metoda GET
Metoda GET pozwala na przesłanie wybranego zasobu do klienta. Jest to najczęściej wykorzystywana metoda serwera HTTP. Zapytania GET klienta nie zawierają żadnych danych poza zestawem nagłówków. W ciele odpowiedzi klient otrzymuje zasób do którego zostało wysłane zapytanie.
Jedną z odmian tej metody jest tzw. „warunkowy GET” (conditional GET). W jego nagłówkach musi znajdować się jeden z:
-
„If-Modified-Since”,
-
„If-Unmodified-Since”,
-
„If-Match”,
-
„If-None-Match”,
-
„If-Range” ([13], str.35).
Nagłówek „If-Modified-Since” jako parametr przyjmuje datę (zazwyczaj ostatniego zapytania klienta do danego zasobu). Jeżeli serwer wykryje, że zasób nie uległ modyfikacji od tego czasu, zwraca zamiast zasobu, status 304 o braku modyfikacji. W przypadku nagłówka „If-Unmodified-Since” metoda zostanie wykonana poprawnie, gdy zasób nie został zmodyfikowany. Jeżeli od podanej daty uległ on zmianie zwracany jest do klienta status 412.
Dla nagłówków „If-Match”, „If-None-Match” parametrem jest tag identyfikujący zasób, lub ich zestaw. Tag zasobu przesyłany jest do klienta za pomocą nagłówka „ETag”. Następnie klient może ponownie wykorzystać ten tag tworząc zapytanie warunkowe z wykorzystaniem nagłówków „If-Match” i „If-None-Match”. Dla zapytania z nagłówkiem „If-Match” serwer porównuje przesłane tagi z tagiem wybranego zasobu na serwerze i jeżeli zawartość nagłówka nie pasuje do tagu zasobu, metoda jest przerywana i zwracany jest status 412. Jeżeli metoda GET zwróci inną wartość niż status 2xx, lub 412 nagłówek „If-Match” powinien zostać zignorowany. Dla nagłówka „If-None-Match” po sprawdzeniu tagów i znalezieniu pasującego trafienia serwer powinien zwrócić status 304 Not Modified. W przeciwnym wypadku zapytanie powinno być przetwarzane, tak jakby nie został dołączony nagłówek „If-None-Match”. Nagłówki „If-Match” i „If-None-Match” jako wartość mogą przyjąć znak „*”, który pasuje do każdego tagu zasobu. W przypadku listy tagów, tagi są oddzielane przecinkami.
Inną odmianą metody GET jest „częściowy GET” (partial GET). Taka odmiana metody GET zawiera nagłówek „Range” i polega na zwracaniu określonego w nagłówku zakresu, lub zakresów danych żądanego zasobu. Dzięki temu możliwe jest m.in. pobieranie dużych plików w częściach, czy wznawianie pobierania w dowolnym momencie w przypadku problemów z połączeniem. Wartość takiego nagłówka poprzedzona jest ciągiem „bytes=”, po którym podawane są przedziały bajtów, które mają być zwrócone w odpowiedzi. W nagłówku można podać wiele zakresów dla zasobu oddzielonych przecinkami. Każdy zakres składa się z dwóch wartości oddzielonych myślnikiem (np. 500-600, oznaczających pobranie 101 bajtów), lub z myślnika i wartości końcowej (np. -500, oznaczającego pobranie ostatnich 500 bajtów), lub z wartości początkowej i myślnika (np. 500-, oznaczającego pobranie zakresu od 500. bajtu do ostatniego). W przypadku listy zakresów wartość nagłówka może wyglądać następująco: „bytes=0-0,-1” (oznacza pobranie pierwszego i ostatniego bajta). Zakresy zasobu zwracane są w jednej odpowiedzi oznaczonej statusem 206 Partial Content. Każdy zakres znajdujący się w ciele odpowiedzi poprzedzony jest własnym nagłówkiem wraz z typem MIME i jego długością, oraz ogólnym separatorem, zdefiniowanym w nagłówku odpowiedzi.
Serwer HTTP 