HTTP (HyperText Transfer Protocol) to protokół warstwy aplikacji, który rządzi wymianą danych w sieci WWW. Działa w modelu żądanie–odpowiedź: klient (najczęściej przeglądarka) wysyła do serwera żądanie o konkretny zasób, a serwer odsyła odpowiedź ze statusem i treścią. Domyślnie chodzi po porcie 80, a jego szyfrowana wersja HTTPS (HTTP po TLS) po porcie 443. Sam w sobie jest tekstowy i czytelny dla człowieka, co bardzo ułatwia naukę i debugowanie.
Każde żądanie ma metodę (GET do pobierania, POST do wysyłania danych, PUT, DELETE i kilka innych), adres zasobu oraz nagłówki. Serwer odpowiada kodem statusu — 200 znaczy OK, 301/302 to przekierowania, 404 to brak zasobu, a 500 to błąd po stronie serwera. Ważna cecha: HTTP jest bezstanowy (stateless) — serwer sam z siebie nie pamięta poprzednich żądań. Dlatego sesje i logowanie ogarnia się ciasteczkami (Cookie) albo tokenami w nagłówku Authorization.
Jak to zobaczyć w praktyce
Najszybszy sposób, żeby poczuć protokół, to curl z poziomu terminala. Wpisz curl -v https://learningzone.pl — flaga -v (verbose) pokaże Ci surowe żądanie, nagłówki i pełną odpowiedź serwera. Do podejrzenia tylko nagłówków bez treści użyjesz curl -I. W przeglądarce ten sam ruch obejrzysz w zakładce Network w DevTools (F12): zobaczysz tam metodę, kod statusu, czas odpowiedzi i wszystkie nagłówki każdego requestu. To pierwsze miejsce, do którego zaglądasz, gdy strona „nie działa”.
Częste pułapki
- HTTP to nie HTTPS. Czysty HTTP wysyła wszystko tekstem, więc loginy i hasła lecą jak na pocztówce. Dziś produkcyjnie używa się wyłącznie HTTPS.
- Mylenie
301z302. 301 to przekierowanie trwałe (ważne dla SEO), 302 tymczasowe — przeglądarki i Google traktują je inaczej. - „Stateless = brak sesji”. Nieprawda — stan trzymasz po prostu poza protokołem, w cookies lub tokenach.
- Wersje protokołu. Oprócz klasycznego HTTP/1.1 masz dziś HTTP/2 i HTTP/3 (po QUIC/UDP) — szybsze, ale logicznie robią to samo.
Pojęcia powiązane: HTTPS, TLS/SSL, TCP/IP, REST API, DNS, nagłówki HTTP, cookies, kody statusu, CORS, model klient–serwer.