Ten artykuł jest częścią serii
World Wide Web


Struktura stron WWW

(X)HTML, XML, XSL


Generowanie dynamicznych stron WWW

ASP, ASP.NET, JSP, PHP


Po stronie użytkownika

CSS, JavaScript, AJAX, Kolory w Internecie


Przesyłanie danych

HTTP(S), HTTP referrer, Serwer WWW, VoiceXML, XMLHttpRequest


Pojęcia

Architektura informacji, Użyteczność (web-usability), Dostępność (WWW)

HTTP (ang. Hypertext Transfer Protocol – protokół przesyłania dokumentów hipertekstowych) to protokół sieci WWW (ang. World Wide Web). Obecną definicję HTTP stanowi RFC 2616. Za pomocą protokołu HTTP przesyła się żądania udostępnienia dokumentów WWW i informacje o kliknięciu odnośnika oraz informacje z formularzy. Zadaniem stron WWW jest publikowanie informacji - natomiast protokół HTTP właśnie to umożliwia.

Protokół HTTP jest tak użyteczny, ponieważ udostępnia znormalizowany sposób komunikowania się komputerów ze sobą. Określa on formę żądań klienta dotyczących danych oraz formę odpowiedzi serwera na te żądania. Jest zaliczany do protokołów bezstanowych (ang. stateless) z racji tego, że nie zachowuje żadnych informacji o poprzednich transakcjach z klientem (po zakończeniu transakcji wszystko "przepada"). Pozwala to znacznie zmniejszyć obciążenie serwera, jednak jest kłopotliwe w sytuacji, gdy np. trzeba zapamiętać konkretny stan dla użytkownika, który wcześniej łączył się już z serwerem. Najczęstszym rozwiązaniem tego problemu jest wprowadzenie mechanizmu cookies. Inne podejścia to m.in. sesje po stronie serwera, ukryte parametry (gdy aktualna strona zawiera formularz) oraz parametry umieszczone w URL-u (jak np. /index.php?userid=3).

HTTP standardowo korzysta z portu nr 80 (TCP).

Spis treści

edytuj Metody HTTP

  1. GET - pobranie zasobu wskazanego przez URI, może mieć postać warunkową jeśli w nagłówku występują pola warunkowe takie jak "If-Modified-Since"
  2. HEAD - pobiera informacje o zasobie, stosowane do sprawdzania dostępności zasobu
  3. PUT - przyjęcie danych w postaci pliku przesyłanych od klienta do serwera
  4. POST - przyjęcie danych przesyłanych od klienta do serwera (np. wysyłanie zawartości formularzy)
  5. DELETE - żądanie usunięcia zasobu, włączone dla uprawnionych użytkowników
  6. OPTIONS - informacje o opcjach i wymaganiach istniejÄ…cych w kanale komunikacyjnym
  7. TRACE - diagnostyka, analiza kanału komunikacyjnego
  8. CONNECT - żądanie przeznaczone dla serwerów proxy pełniących funkcje tunelowania

edytuj Typowe zapytanie HTTP

  1. GET / HTTP/1.1 (prośba o zwrócenie dokumentu o URI / zgodnie z protokołem HTTP 1.1)
  2. Host: host.com (wymagany w HTTP 1.1 nagłówek Host służący do rozpoznania hosta, jeśli serwer na jednym IP obsługuje kilka VirtualHostów)
  3. User-Agent: Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 (nazwa aplikacji klienckiej)
  4. Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8 (akceptowane (bądź nieakceptowane dla q=0) przez klienta typy plików)
  5. Accept-Language: pl,en-us;q=0.7,en;q=0.3 (preferowany język strony - nagłówek przydatny przy Language negotiation)
  6. Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7 (preferowane kodowanie znaków, patrz strona kodowa)
  7. Keep-Alive: 300 (czas, jaki klient chce zarezerwować do następnego zapytania w przypadku połączenia Keep-Alive)
  8. Connection: keep-alive (chęć nawiązania połączenia stałego Keep-Alive z serwerem HTTP/1.0)
  9. znak powrotu karetki i nowej linii (CRLF)

HTTP/1.1 dopuszcza wysłanie kilku żądań naraz (pipelining). HTTP/1.0 zakłada jedno żądanie i jedną odpowiedź.

edytuj Odpowiedź serwera WWW

  1. HTTP/1.1 200 OK (kod odpowiedzi HTTP, w tym wypadku zakceptowanie i zwrócenie zawartości)
  2. Date: Sun, 11 Jul 2004 12:04:30 GMT (czas serwera)
  3. Server: Apache/2.0.50 (Unix) DAV/2 (opis aplikacji serwera)
  4. Set-Cookie: PSID=d6dd02e9957fb162d2385ca6f2829a73; path=/ (nakazanie klientowi zapisania Cookie)
  5. Expires: Thu, 19 Nov 1981 08:52:00 GMT (czas wygaśnięcia zawartości zwróconego dokumentu. Data w przeszłości zabrania umieszczenie dokumentu w cache. Jest to stara metoda zastąpiona przez Cache-Control)
  6. Cache-Control: no-store, no-cache, must-revalidate (no-store zabrania przechowywania dokumentu na dysku, nawet gdy nie jest to cache. must-revalidate nakazuje bezwzględnie stosować się do wytycznych i sprawdzić swieżość dokumentu za każdym razem)
  7. Pragma: no-cache (informacje dotyczące Cache'owania zawartości. Stara, niestandardowa metoda.)
  8. Keep-Alive: timeout=15, max=100
  9. Connection: Keep-Alive (akceptacja połączenia Keep-Alive dla klientów HTTP/1.0)
  10. Transfer-Encoding: chunked (typ kodowania zawartości stosowanej przez serwer)
  11. Content-Type: application/xhtml+xml; charset=utf-8 (typ MIME i strona kodowa zwróconego dokumetu)
  12. znak powrotu karetki i nowej linii (CRLF)
  13. tutaj zawartość dokumentu

HTTP do obsługi połączeń Keep-Alive wymaga aby odpowiedź od serwera miała znaną długość (przez podanie Content-Length lub użycie Transfer-Encoding: chunked). W przeciwnym wypadku koniec odpowiedzi sygnalizuje zerwanie połączenia i Keep-Alive nie może działać.

Nagłówek Keep-Alive jest rozszerzeniem HTTP/1.0. W HTTP/1.1 ten nagłówek nie jest potrzebny, gdyż połączenia Keep-Alive są domyślne (zachowanie zmienia Connection: close).

edytuj Zobacz też

edytuj Linki zewnętrzne