tom000 - Personal Website - Strona główna
decor1 Serwer HTTP decor2

Odpowiedź dla HTTP/1.1

    Klasa odpowiedzi dla protokołu HTTP/1.1 obsługuje taki sam zestaw metod jak dla protokołu HTTP/1.0. Specyfikacja HTTP/1.1 wprowadziła wiele nowych nagłówków, z których część powinna zostać zaimplementowana w serwerze. Tworząc odpowiedź przede wszystkim należy sprawdzić, czy został do zapytania dodany nagłówek „Host”. Jeżeli nie, powinien zostać zwrócony status 400 Bad Request. Dopiero, gdy taki nagłówek znalazł się w zapytaniu można zająć się rozpoznawaniem metody, do której odwołuje się klient.

    Do zestawu nagłówków tworzących zapytania warunkowe dodano kilka kolejnych. Generowanie odpowiedzi dla nagłówka „If-Unmodified-Since” przebiega podobnie jak dla zapytania warunkowego w protokole HTTP/1.0, lecz zwrócony zostanie status 412 Precondition Failed, jeżeli plik uległ modyfikacji od podanego czasu, w przeciwnym wypadku tworzenie odpowiedzi będzie standardowo kontynuowane. Dla nagłówków „If-Mach”, „If-None-Mach”, otrzymana w formie Stringu lista tagów jest rozdzielana (każdy element jest oddzielony przecinkiem), a następnie porównywana z tagiem zasobu na serwerze i w przypadku znalezienia (dla „If-None-Mach” i metody różnej od GET i HEAD) lub nie znalezienia (dla „If-Mach”) zwracany jest również status 412. W przypadku trafienia, dla nagłówka „If-None-Mach” zwracany jest status 304. Aby umożliwić klientowi korzystanie z nagłówków „If-Mach”, „If-None-Mach” do tworzonej odpowiedzi z zasobem należy dodać nagłówek „ETag”, wraz z tagiem umożliwiającym zidentyfikowanie zasobu. Tag taki powinien się zmieniać wraz z modyfikacją zasobu.

    W metodach GET, HEAD i POST, pojawiać się mogą nagłówki informujące, że klient chce pobrać tylko pewne zakresy z zasobu znajdującego się na serwerze. Jeżeli podczas tworzenia odpowiedzi serwer napotka nagłówek „Range”, wraz z przedziałami bajtów, które chce otrzymać klient, ustawia wtedy na obiekcie zasobu takie ograniczenia. Przedziały te są wycinane i zwracane podczas pobierania Stringu z ciałem zasobu, a dla klienta zwracana jest odpowiedź ze statusem 206 Partial Content, wraz z podzielonym na części zasobem.

Rys. 3.1 Odpowiedź serwera z zasobem podzielonym na dwie części

Rys. 3.1 Odpowiedź serwera z zasobem podzielonym na dwie części ([13] str. 101)

← Odpowiedź dla HTTP/1.0 Serwer HTTP Tworzenie obiektu reprezentującego zasób serwera →
Copyleft (C) tom000.info 2004-2012. Some rights reserved.