Zapytanie HTTP w terminalu protokołu Telnet w systemie Linux Ubuntu.
HTTP (ang.Hypertext Transfer Protocol) –protokół stworzony przezTima Bernersa-Lee na potrzeby komunikacji między klientem a serwerem wsieciWWW (ang.World Wide Web). Najnowszą specyfikację HTTP stanowi dokumentRFC 2616 ↓. Przy pomocy protokołu klienci HTTP komunikują się z serwerami, zamawiającpliki składające się na strony internetowe oraz dostarczają niezbędne do tego informacje, np. treści wprowadzane w formularzach.
Określa on formę żądań klienta (tj. np.przeglądarki www) dotyczących danych oraz formę odpowiedziserwera na te żądania. W oryginalnych implementacjach był protokołem bezstanowym (ang.stateless), bowiem nie zachowywał żadnych informacji o poprzednich transakcjach z klientem. Pozwalało 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. Jeszcze w latach 90. XX wieku firmaNetscape wprowadziła początkowo nieformalne, a następnie ustandaryzowane rozszerzenie znane jakociasteczka. Inne podejścia to m.in.sesje po stronie serwera, ukryte parametry – gdy aktualna strona zawiera formularz – oraz parametry umieszczone wURL-u (jak np./index.php?userid=3).
Serwery obsługujące HTTP standardowo nasłuchują naporcieTCP numer 80[1].
W 2015 opublikowana została kolejna wersja protokołuHTTP/2, a w 2022 kolejnaHTTP/3.
Metoda CONNECT nie jest częścią standardu HTTP/1.1, jednak jest powszechnie implementowana na podstawie dokumentuinternet-draft wygasłego w 1999 roku[2].
Expires: Thu, 19 Nov 1981 08:52:00GMT (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 gdy nie jest topamięć podręczna. must-revalidate nakazuje bezwzględnie stosować się do wytycznych i sprawdzić świeżość dokumentu za każdym razem)
HTTP do obsługi połączeńKeep - Alive wymaga, aby odpowiedź od serwera miała znaną długość (przez podanieContent-Length lub użycieTransfer-Encoding: chunked). W przeciwnym wypadku koniec odpowiedzi sygnalizuje zerwanie połączenia iKeep-Alive nie może działać.
NagłówekKeep-Alive jest rozszerzeniem HTTP/1.0. W HTTP/1.1 ten nagłówek nie jest potrzebny, gdyż połączeniaKeep-Alive są domyślne (zachowanie zmieniaConnection: close).