Uvod
Kada određeni računar (to jest 'klijent'), pošalje serveru zahtev za pristup određenoj web stranici (ili nekom drugom sadržaju), server prima zahtev, obrađuje zahtev i zatim, preko protokola HTTP, vraća klijentu odgovor, koji između ostalog sadrži i trocifreni broj koji predstavlja statusni kod obrađenog zahteva.
Statusni kod označava na koji način je zahtev rešen, pri čemu prva cifra označava kategoriju odgovora, a preostale dve cifre dodatno određuju konkretan status.
U članku koji je pred nama, upoznaćemo se sa poznatijim statusnim kodovima koji se šalju preko HTTP protokola.
Kako očitavati statusne kodove
Pre nego što se posvetimo značenju različitih statusa, ukratko ćemo razmotriti kako se http statusi (uopšte) mogu očitavati.
- Ukoliko je 'sve u redu' tipično nećemo videti 'status', već - traženi sadržaj (stranica će biti prikazana).
- Ukoliko nije 'sve u redu', server će poslati statusni kod koji 'signalizira da je došlo do greške', nakon čega će (u ogromnoj većini situacija), status biti prikazan posetiocu sajta, direktno u browseru (umesto zahtevanih sadržaja).
Postoje takođe i specijalizovani softveri ....
.... koji omogućavaju 'praćenje' http statusa i drugih informacija koje serveri šalju klijentima (na slici možete videti program Postman (verovatno najpopularniji program za 'nadziranje' mrežnog saobraćaja)).
Vraćamo se na statuse ....
2xx - Uspešno prihvaćeni zahtevi
Svi statusni kodovi iz grupe 2**
označavaju uspešno prihvaćene zahteve, međutim, samo jedan status označava ishod koji je zapravo povoljan (ukoliko imate želju da se bavite web programiranjem, zapamtite odmah status 200
i njegovo značenje - trebaće vam). :)
200 - Status OK
Status 200
je status koji server vraća u situaciji kada je zahtev, ne samo uspešno prihvaćen, već i uspešno rešen (nije bilo grešaka: ni u prijemu i obradi zahteva, ni u pronalaženju sadržaja).
Najprostije rečeno, u pitanju je status koji želimo da dobijemo svaki put kada se obratimo serveru (osim ako se ne bavimo određenim vidom testiranja, debugging-a i sl).
202 - Zahtev prihvaćen
Zahtev je prihvaćen, ali, nije rešen (obrada podataka, iz bilo kog razloga, nije obavljena u potpunosti).
204 - Nema sadržaja
Zahtev je prihvaćen i obrađen, ali, nije vraćen nikakav sadržaj.
206 - Sadržaj je vraćen delimično
Zahtev je prihvaćen i obrađen, ali, sadržaj je vraćen samo delimično (zbog veličine / obima paketa koji se šalju, zakrčenja mrežnog saobraćaja, ili iz drugih tehničkih razloga).
3xx - Preusmeravanje
Statusni kodovi iz kategorije 3**
, i dalje su prilično 'benigni' (ali ne i povoljni), * i odnose se na dodatne korake koji se preduzimaju zarad pristupa traženim sadržajima.
U praktičnom smislu, većina 3**
statusa se odnosi na redirekciju, i stoga ćemo se upoznati upravo sa dva najpoznatija (i najčešće korišćena) statusa iz kategorije 3**
.
301 - Stranica je premeštena trajno
Status 301
označava da je određena stranica premeštena na novu adresu (usled čega se i programi za pregled stranice (browseri), preusmeravaju upravo - na novu adresu).
302 - Stranica je premeštena privremeno
Kao i u prethodnom slučaju, status se javlja u situacijama kada je stranica premeštena na novu adresu (s tim da naravno postoji razlika u odnosu na status 301
).
Status 302
sugeriše pretraživačima (Google, Bing, DuckDuckGo i sl), da je stranica premeštena na drugu adresu samo privremeno.
U nastavku, upoznaćemo se sa statusnim kodovima iz kategorija 4**
i 5**
(pri čemu su u pitanju statusni kodovi koji označavaju greške u učitavanju traženih sadržaja, a ne samo "ne-baš-skroz-povoljne okolnosti").
4xx - Greške na strani klijenta
Statusni kodovi iz kategorije 4**
upućuju na to da zahtev nije prihvaćen zbog zbog greške na strani klijenta.
401 - Pristup stranici je odbijen
Status 401
označava da je pristup stranici, koja zahteva korisničko ime i lozinku, odbijen zbog neodgovarajućih podataka za autentifikaciju (pogrešna lozinka, kombinacija korisničkog imena i lozinke i sl).
403 - Pristup stranici je zabranjen
Pristup stranici je zabranjen, a razlika u odnosu na status 401
je sledeća: u slučaju statusa 403
, klijent nema pravo pristupa ni pod kojim okolnostima, dok status 401
označava da korisnik (inače) ima pravo pristupa, ali, pristup nije uspeo zbog nepravilno prosleđenih podataka.
Tipičan primer situacije u kojoj se javlja status 403
, je pokušaj klijenta da direktno pristupi direktorijumima i datotekama na serveru, pri čemu je - preko podešavanja na serveru - pristup navedenim sadržajima zabranjen (a pored toga, tu su i situacije u kojima je IP adresa klijenta blokirana i sl).
404 - Stranica nije pronađena
Status 404
(koji čitaoci, verujemo, sasvim dobro poznaju iz svakodnevene prakse), označava neuspeli pokušaj pristupa stranici koja ne postoji na serveru.
Subjektivno, korisnici mogu praviti razliku između sadržaja koji "opravdano" ne postoje, * i situacija kada se (na primer), koristi link koji je ranije bio funkcionalan, ali je stranica (ne greškom korisnika/klijenta), izbrisana ili pomerena, međutim - server jednostavno 'konstatuje' da stranica ne postoji (bez ikakvog zalaženja u "istoriju i politiku").
414 - Adresa sadrži previše znakova
Broj znakova u URI identifikatoru (adresi), premašuje dozvoljenu granicu (što se povremeno dešava kada se preko protokola GET šalju niske znakova prevelike dužine).
429 - Preveliki broj zahteva
Preveliki broj zahteva za uspostavljanje konekcije (koji su upućeni sa IP adrese klijenta).
5xx - Greške na strani servera
Statusni kodovi iz kategorije 5**
sadrže poruke koje su prouzrokovane greškom na strani servera.
500 - Interna greška servera
Greška koju server vraća kada neočekivano nije u mogućnosti da odgovori na zahtev klijenta, niti da pruži specifičnu informaciju o prirodi greške.
501 - Protokol nije implementiran
Server ne prepoznaje protokol za pristup podacima.
503 - Server nedostupan
Server nije u stanju da odgovori zbog preopterećenosti ili je privremeno isključen zbog održavanja.
505 - Verzija HTTP-a nije podržana
Server ne prepoznaje verziju HTTP protokola koju klijent koristi pri pokušaju pristupa.
Kratak rezime ....
U ovom članku naveli smo (relativno) mali broj HTTP statusa, međutim, naveli smo HTTP statuse sa kojima se administratori servera tipično sreću u svakodnevnom radu (kao i nekoliko 'netipičnih' statusa), dok, sa druge strane, korisnici najčešće imaju susreta samo sa statusima 200
, * 404
i ređe, 403
ili 503
).
Ukoliko želite da dalje istražujete tematiku, brojni Internet sajtovi omogućiće vam uvid u bogatu dokumentaciju koja je vezana za HTTP statuse.