| World Wide Web |
Struktura stron WWW
HTML, XHTML, XML, XSL
Generowanie dynamicznych stron WWW
Active Server Pages, ASP.NET, JavaServer Pages, PHP
Po stronie użytkownika
kaskadowe arkusze stylów, JavaScript, AJAX, kolory w Internecie
Przesyłanie danych
Hypertext Transfer Protocol, HTTPS, HTTP referrer, serwer WWW, VoiceXML, XMLHttpRequest
Pojęcia
architektura informacji, użyteczność, dostępność
|
HTTP (ang. Hypertext Transfer Protocol – protokół przesyłania dokumentów hipertekstowych) to protokół sieci WWW (ang. World Wide Web). Aktualną definicję HTTP stanowi RFC 2616. Za pomocą protokołu HTTP przesyła się żądania udostępnienia dokumentów WWW oraz 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 użyteczny, albowiem udostępnia znormalizowany sposób komunikowania się komputerów ze sobą. Definiuje on formę żądań klienta (tj. np. przeglądarki www) 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"). Umożliwia to wydatnie zmniejszyć obciążenie serwera, jednak jest kłopotliwe w sytuacji, kiedy np. trzeba zapamiętać konkretny stan dla użytkownika, który wcześniej łączył się już z serwerem. Najpopularniejszym rozwiązaniem tego dylematu jest wprowadzenie mechanizmu ciasteczek. Odmienne podejścia to m.in. sesje po stronie serwera, ukryte parametry (gdy aktualna strona zawiera formularz) oraz parametry zawarte w URL-u (jak np. /index.php?userid=3).
HTTP standardowo wykorzystuje z portu nr 80 (TCP).
Metody HTTP
- GET – pobranie zasobu wskazanego przez URI, może posiadać osoba warunkową jeśli w nagłówku są pola warunkowe takie jak "If-Modified-Since"
- HEAD – pobiera informacje o zasobie, stosowane do sprawdzania dostępności zasobu
- PUT – przyjęcie danych w postaci pliku przesyłanych od klienta do serwera
- POST – przyjęcie danych przesyłanych od klienta do serwera (np. wysyłanie zawartości formularzy)
- DELETE – żądanie usunięcia zasobu, włączone dla uprawnionych użytkowników
- OPTIONS – informacje o opcjach oraz wymaganiach istniejących w kanale komunikacyjnym
- TRACE – diagnostyka, analiza kanału komunikacyjnego
- CONNECT – żądanie przeznaczone dla serwerów pośredniczących pełniących funkcje tunelowania
Metoda CONNECT nie jest częścią standardu HTTP/1.1, jednak jest powszechnie implementowana na podstawie dokumentu internet-draft wygasłego w 1999 roku[1].
Typowe zapytanie HTTP
- GET / HTTP/1.1 (prośba o zwrócenie dokumentu o URI / zgodnie z protokołem HTTP 1.1)
- 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 parę VirtualHostów)
- 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)
- 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)
- Accept-Language: pl,en-us;q=0.7,en;q=0.3 (preferowany język strony – nagłówek przydatny przy Language negotiation)
- Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7 (preferowane kodowanie znaków, patrz strona kodowa)
- Keep-Alive: 300 (czas, jaki klient chce zarezerwować do następnego zapytania w przypadku połączenia Keep-Alive)
- Connection: keep-alive (chęć nawiązania połączenia stałego Keep-Alive z serwerem HTTP/1.0)
- znak powrotu karetki oraz nowej linii (CRLF)
HTTP/1.1 dopuszcza wysłanie kilku żądań naraz (pipelining). HTTP/1.0 zakłada jedno żądanie oraz jedną odpowiedź.
Odpowiedź serwera WWW
- HTTP/1.1 200 OK (kod odpowiedzi HTTP, w tym wypadku zaakceptowanie oraz zwrócenie zawartości)
- Date: Thu, 20 Dec 2001 12:04:30 GMT (czas serwera)
- Server: Apache/2.0.50 (Unix) DAV/2 (opis aplikacji serwera)
- Set-Cookie: PSID=d6dd02e9957fb162d2385ca6f2829a73; path=/ (nakazanie klientowi zapisania ciasteczka)
- 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 pamięci podręcznej. Jest to stara metoda zastąpiona przez Cache-Control)
- Cache-Control: no-store, no-cache, must-revalidate (no-store zabrania przechowywania dokumentu na dysku, nawet kiedy nie jest to pamięć podręczna. must-revalidate nakazuje bezwzględnie stosować się do wytycznych oraz sprawdzić świeżość dokumentu za każdym razem)
- Pragma: no-cache (informacje dotyczące zapisywania zawartości w pamięci podręcznej. Stara, niestandardowa metoda.)
- Keep-Alive: timeout=15, max=100
- Connection: Keep-Alive (akceptacja połączenia Keep-Alive dla klientów HTTP/1.0)
- Transfer-Encoding: chunked (typ kodowania zawartości stosowanej przez serwer)
- Content-Type: application/xhtml+xml; charset=utf-8 (typ MIME oraz strona kodowa zwróconego dokumentu)
- znak powrotu karetki oraz nowej linii (CRLF)
- 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 albo użycie Transfer-Encoding: chunked). W przeciwnym wypadku koniec odpowiedzi sygnalizuje zerwanie połączenia oraz 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, albowiem połączenia Keep-Alive są domyślne (zachowanie zmienia Connection: close).
Przypisy
Sprawdź też
Linki zewnętrzne