HTTP protokol: zahtevi, odgovori i statusni kodovi

Lekcija 4 od 8 · Osnove weba

HTTP je „jezik“ kojim pregledač i server razgovaraju. Svaki zahtev i svaki odgovor imaju isti oblik: početni red, zaglavlja i (ponekad) telo. Kada ga razumeš, lako pratiš šta radi bilo koja web aplikacija – i brzo nalaziš greške.

Pre nego što počneš: potrebno predznanje – web server, kako radi internet.
Kako da učiš: svaki primer isprobaj u pregledaču ili komandnoj liniji i uradi vežbe iz lekcije. Primeri su u HTML-u, JavaScript-u i Python-u; za većinu je dovoljan pregledač, a za Python primere instaliran Python 3.

Kako izgleda HTTP zahtev

GET /binarna_pretraga HTTP/1.1          ← početni red: metoda, putanja, verzija
Host: svetprogramiranja.com              ← zaglavlja (ime: vrednost)
User-Agent: Mozilla/5.0 (Windows NT 10.0) Chrome/130
Accept: text/html
Accept-Language: sr,en
                                         ← prazan red: kraj zaglavlja

GET zahtev nema telo. Kada se šalju podaci (forma, prijava), koristi se POST i podaci idu u telo posle praznog reda:

POST /prijava HTTP/1.1
Host: primer.rs
Content-Type: application/x-www-form-urlencoded
Content-Length: 29

korisnik=ana&lozinka=tajna123

HTTP metode

MetodaZnačenjePrimer
GETpročitaj / donesiotvaranje stranice, pretraga
POSTpošalji nove podatkeslanje forme, registracija, novi komentar
PUT / PATCHizmeni postojeće (celo / deo)izmena profila
DELETEobrišibrisanje poruke
HEADkao GET, ali bez tela – samo zaglavljaprovera da li strana postoji

GET parametri su vidljivi u adresi (?q=petlje) i ostaju u istoriji pregledača, zato se lozinke nikada ne šalju GET-om.

Kako izgleda HTTP odgovor

HTTP/1.1 200 OK                          ← verzija, statusni kod, opis
Content-Type: text/html; charset=utf-8   ← vrsta sadržaja
Content-Length: 18240
Cache-Control: max-age=3600              ← pregledač sme da čuva kopiju 1 sat

<!DOCTYPE html>                          ← telo: HTML stranica
<html lang="sr"> ...

Zaglavlje Content-Type govori pregledaču šta je dobio: text/html, text/css, application/javascript, image/png, application/json…

Statusni kodovi

GrupaZnačenjeNajčešći
1xxinformacija101 Switching Protocols (prelazak na WebSocket)
2xxuspeh200 OK, 201 Created, 204 No Content
3xxpreusmerenje301 Moved Permanently (stara adresa trajno vodi na novu), 302 Found, 304 Not Modified (koristi kopiju iz keša)
4xxgreška klijenta400 Bad Request, 401 Unauthorized (nisi prijavljen), 403 Forbidden (nemaš pravo), 404 Not Found, 429 Too Many Requests
5xxgreška servera500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable
Kako zapamtiti: 2 – „sve je u redu“, 3 – „idi tamo“, 4 – „ti si pogrešio“, 5 – „ja (server) sam pogrešio“.

HTTP nema pamćenje: kolačići i sesije

HTTP je bez stanja (stateless): server ne pamti prethodni zahtev. Kako onda ostaješ prijavljen/a dok prelaziš sa strane na stranu?

  1. Posle uspešne prijave server u odgovoru pošalje zaglavlje Set-Cookie: sesija=a8f3….
  2. Pregledač sačuva kolačić (cookie) i pri svakom sledećem zahtevu istom sajtu pošalje Cookie: sesija=a8f3….
  3. Server po toj oznaci prepozna sesiju – zna da si to ti.

Zato je kolačić sesije poverljiv kao lozinka: ko ga ukrade, može da se predstavi kao ti. Više u lekciji Bezbednost web aplikacija.

HTTP, HTTPS i verzije protokola

Opis
HTTP/1.1 (1997)tekstualni zahtevi; jedan zahtev po vezi u isto vreme
HTTP/2 (2015)više zahteva istovremeno kroz jednu vezu, kompresija zaglavlja
HTTP/3 (2022)radi preko protokola QUIC (UDP) – brži na lošim mrežama i telefonima
HTTPSbilo koja verzija HTTP-a, ali šifrovana pomoću TLS-a – katanac u adresnoj liniji

Danas skoro svi sajtovi koriste HTTPS, a pregledači označavaju sajtove bez njega kao „nebezbedne“.

Vežba: posmatraj HTTP u pregledaču i komandnoj liniji

Alat pregledača (DevTools): u Chrome-u, Edge-u i Firefox-u otvara se tasterom F12 (ili desni klik → Inspect / Pregledaj). Najvažniji tabovi su Elements (HTML i CSS stranice), Console (poruke i greške JavaScript-a) i Network (svi zahtevi koje stranica šalje).

  1. Otvori F12 → Network, pa otvori stranicu koja ne postoji, npr. /nepostojeca_strana. Kakav je status?
  2. Klikni na zahtev i otvori Headers: pronađi Request Method, Status Code, Content-Type i User-Agent.
  3. U komandnoj liniji (Windows 10/11 ima curl) ukucaj:
curl -I https://svetprogramiranja.com/uvod_u_web

Opcija -I traži samo zaglavlja (HEAD). Videćeš status 200 i zaglavlja odgovora. Probaj i sa adresom http:// (bez s) – server odgovara preusmerenjem 301 na https.

Česte greške i saveti
  • Lozinke i lični podaci šalju se POST-om, i samo preko HTTPS-a.
  • 404 je greška u adresi (klijent), 500 je greška u kodu na serveru.
  • Zaglavlja se pišu kao „Ime: vrednost“, a od tela ih deli jedan prazan red.

Proveri znanje

Otvori kviz

HTTP protokol

1. Koja metoda se koristi za slanje forme za registraciju?




2. Šta znači statusni kod 404?




3. Kako server „pamti“ da si prijavljen/a, kada HTTP nema stanje?




4. Koja grupa kodova označava grešku servera?