nav_dugme codeBlog codeBlog
  • početna Početna stranica
  • Sačuvani članci Sačuvani članci
  • Članci
     (spisak)
  • Kontakt
Povratak na vrh stranice

Info & povezani članci Info o članku - dugme

Info

trejler_sat Datum objave: 15.10.2020.

trejler_olovka Poslednja izmena: 05.05.2023.

trejler_dokument Jezici: ----

trejler_teg_narandzasti Težina: 4/10

http
http statusni kodovi
internet
frontend
backend
fullstack
teorija
zanimljivosti

Povezani članci

Napredni parametri internet pretrageUvod u web dizajn - 1. deo - Početni koraciStruktura web adresa i pristup internet stranicamaKako napraviti dobru lozinkuPokretanje lokalnog web serveraLokalno skladištenje podataka browsera (sessionStorage, localStorage, cookies)Izbor prvog programskog jezikaAsinhrono programiranje u JavaScriptuASCII, Unicode i UTF - Predstavljanje znakova na računarimaGNU/Linux - 1. deo - Uvod
Svi članci
Weeks of programming can save you hours of planning!
Anonymous

HTTP statusni kodovi

Facebook LinkedIn Twitter Viber WhatsApp E-mail
zoom_plus zoom_minus bookmark
početna > Članci > Zanimljivosti

Uvod

Kada određeni računar (tj. '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 prosleđuju preko protokola HTTP, ali, pre nego što se posvetimo značenju različitih statusa, prvo ćemo ukratko razmotriti kako se HTTP statusi (uopšte) mogu očitavati.

Kako očitavati statusne kodove

Ukoliko je sve u redu (pri učitavanju stranice), tipično nećemo videti 'statusni kod', već - traženi sadržaj (stranica će biti prikazana u browseru).

Regularno učitavanje stranice - ilustracija
Slika 1. Ilustracija regularog učitavanja stranice (status 200).

Ukoliko nije 'sve u redu', u browseru se direktno prikazuje statusni kod koji 'signalizira da je došlo do greške' (umesto traženih sadržaja).

Prikaz informacije o neuspešnom učitavanju stranice koja nije pronađena
Slika 2. Primer prikazivanja statusa 404 (tj. prikaz informacija o neuspešnom učitavanju stranice koja nije pronađena).

Da pojasnimo dodatno: browser (ili neki drugi softver) uvek dobija od servera i statusni kod, ali, u slučaju uspešnog učitavanja stranice 'glavna informacija' je - sadržaj stranice, dok je u slučaju neuspešnog učitavanja glavna informacija statusni kod (koji sugeriše "šta je tačno krenulo naopako").

U skladu sa potrebama (ili po želji), u browserima je "i inače" (tj. "uvek") moguće pratiti statusne kodove direktno, preko web dev alata (o kojima smo već pisali) * ....

Web dev - statusni kodovi
Slika 3. Primer praćenja http statusa i drugih informacija preko web dev prozora u browseru.

.... međutim, prava zanimljivost su specijalizovani softveri ** ....

Postman - statusni kodovi
Slika 4. Primer praćenja http statusa i drugih informacija preko programa Postman.

.... koji prikazuju statusne kodove i ostale informacije 'tehničke prirode', ali takođe omogućavaju i obavljanje raznih drugih 'zahvata' (npr. moguće je direktno upućivati POST zahteve uz slanje dodatnih parametara i sl).

* Da se podsetimo: preko prečice F12 otvara se prozor sa web dev alatima (nakon čega se možete prebaciti na karticu "Network").

** Na slici #2 možete videti program Postman, verovatno najpopularniji program za direktno upućivanje zahteva i praćenje statusa.

Na Linux-u (i drugim UNIX-olikim sistemima), veoma je popularan i program curl, koja omogućava da se određenom URL-u pristupi preko terminala (npr. curl http://localhost:5000 i sl).

Vraćamo se na statusne kodove ....

2xx - Uspešno prihvaćeni zahtevi

Svi statusni kodovi iz grupe 2** označavaju uspešno prihvaćene zahteve, međutim, samo prva dva statusa (u nastavku) označavaju ishode koji su 'skroz povoljni' (ukoliko imate želju da se bavite web programiranjem, preporučujemo da odmah zapamtite status 200 i njegovo značenje - trebaće vam). :)

200 - Status OK

Statusni kod 200 je deo odgovora servera u situacijama kada zahtev za čitanje podataka, ne samo da je uspešno prihvaćen, već je 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 zarad čitanja podataka (osim ako se ne bavimo određenim vidom testiranja, debugging-a i sl).

201 - Created (Sadržaj kreiran)

Statusni kod 201 označava da je zahtev za kreiranje novog sadržaja na serveru prihvaćen - i pri tom je sadržaj uspešno kreiran (tipičan primer: uspešno kreiranje novog korisničkog naloga preko POST zahteva).

Ovoga puta, u pitanju je najpovoljniji status koji očekujemo svaki put kada se obratimo serveru zarad upisa (novih) podataka na server.

Kao što smo već nagovestili, ostali 2** statusi označavaju situacije koje nisu 'kritične', ali su (ipak) nešto manje povoljne.

202 - Accepted (Zahtev prihvaćen)

Zahtev je prihvaćen, ali, nije rešen (obrada podataka, iz bilo kog razloga, nije obavljena u potpunosti).

204 - No content (Nema sadržaja)

Zahtev je prihvaćen i obrađen, ali nije vraćen nikakav sadržaj.

206 - Partial content (Sadržaj je vraćen delimično)

Zahtev je prihvaćen i obrađen, ali je sadržaj vraćen samo delimično (zbog veličine (tj. 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**.

* Kao što smo već naveli, može se reći da su samo statusni kodovi 200 i 201 zapravo povoljni. :)

301 - Moved permanently (Stranica je premeštena trajno)

Status 301 označava da je određena stranica premeštena na novu adresu (usled čega se i programi koji pristupaju stranici, preusmeravaju upravo - na novu adresu).

U praktičnom smislu, na serveru koji isporučuje traženi sadržaj, najčešće postoji određeni mehanizam za redirekciju: korisnik poziva 'stari' link (primer: http://sajt.rs/blog.php?p=mobilni_telefoni), ali, biva prebačen na odgovarajuću 'novu' adresu (primer: https://sajt.rs/blog/mobilni_telefoni), pri čemu se klijentu šalje status 301, koji daje informaciju o tome da je URL promenjen (i sugeriše da je potrebno ažurirati postojeće linkove).

302 - Found (Stranica je premeštena privremeno)

Kao i u prethodnom slučaju, u pitanju je statusni kod koji se javlja u situacijama kada je stranica premeštena na novu adresu, s tim da (naravno/očekivano) postoji razlika u odnosu na status 301.

Statusni kod 302 sugeriše pretraživačima (Google, Bing, DuckDuckGo i sl), da je stranica premeštena na drugu adresu samo privremeno.

Status 302 je do nedavno nosio i zvaničan naziv "Moved temporarily".

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 greške na strani klijenta.

400 - Bad request (Nepravilno formatiran zahtev)

Server nije u stanju da odgovori na zahtev klijenta (ili odbija da odgovori na zahtev klijenta), s obzirom na nepravilan format zahteva.

Sintaksa zahteva (bilo slučajno, bilo namerno), nije u odgovarajućem formatu.

401 - Unauthorized (Pristup stranici je odbijen)

Statusni kod 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 - Forbidden (Pristup stranici je zabranjen)

Statusni kod 403 označava da je pristup stranici zabranjen, a razlika u odnosu na status 401 je sledeća: statusni kod 403 javlja se u situacijama kada klijent nema pravo pristupa ni pod kojim okolnostima, dok status 401 označava da klijent inače ima pravo pristupa, ali, pristup nije uspeo zbog nepravilno prosleđenih podataka.

Najčešće se statusni kod 403 javlja pri pokušaju klijenta da direktno pristupi direktorijumima i datotekama na serveru - pri čemu je pristup navedenim sadržajima zabranjen (preko podešavanja na serveru).

Pored navedenog, povremeno se dešava da je IP adresa klijenta blokirana i sl.

404 - Not found (Stranica nije pronađena)

Statusni kod 404 (za koji verujemo da je čitaocima sasvim dobro poznat iz svakodnevne prakse :)), označava neuspeli pokušaj pristupa stranici koja ne postoji na serveru.

Korisnici mogu ("za svoj račun") 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 izbrisana ili pomerena (pri čemu nije u pitanju greška korisnika, tj. klijenta), međutim - server jednostavno 'konstatuje' da stranica ne postoji (bez ikakvog zalaženja u "istoriju i politiku").

* Na primer, odmah pošto smo pritisli taster enter, shvatili smo da smo prethodno uneli pogrešnu adresu i sl.

Premeštanje stranica bez preusmeravanja (kao i brisanje "bez prethodne najave"), u većini slučajeva jeste loša praksa sa strane ljudi koji se bave administracijom servera, ali, na najosnovnijem tehničkom nivou, 'poruka 404' je opravdana - korisnik je tražio stranicu koja ne postoji, a server se ne bavi time "ko je kriv" što stranica nije "tamo gde je nekad bila".

Ostali 4** statusi su manje uobičajeni (navešćemo samo nekoliko).

408 - Request timeout (Vreme isteklo)

Ukoliko klijent uspostavi vezu sa serverom i započne slanje zahteva, ali ne obavi slanje zahteva u celosti (za vreme koje je predviđeno za prijem zahteva), server vraća statusni kod 408 i prekida (privremeno) vezu sa klijentom.

Tipičan primer: iz tehničkih razloga, veza između klijenta i servera je privremeno u prekidu, ili je znatno usporena.

Nakon otklanjanja navedenih nedostataka, klijent može ponovo uputiti zahtev.

414 - URI too long (Adresa sadrži previše znakova)

Broj znakova u URI identifikatoru (tj. adresi), premašuje dozvoljenu granicu (što se povremeno dešava kada se preko HTTP metode GET šalju niske znakova prevelike dužine).

429 - Too many requests (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 - Internal server error (Interna greška servera)

Server neočekivano nije u mogućnosti da odgovori na zahtev klijenta, niti da pruži specifičnu informaciju o prirodi greške.

501 - Not implemented (Protokol nije implementiran)

Server ne prepoznaje protokol za pristup podacima.

503 - Service unavailable (Server nedostupan)

Server nije u stanju da odgovori zbog preopterećenosti, ili je privremeno isključen zbog održavanja i sl.

505 - HTTP version not supported (Verzija HTTP-a nije podržana)

Server ne prepoznaje verziju HTTP protokola koju klijent koristi pri pokušaju pristupa.

Kratak rezime ....

U ovom članku prikazali smo relativno mali broj statusnih kodova, međutim, naveli smo statusne kodove 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.

Autor članka Nikola Vukićević Za web portal codeblog.rs
Napomena: Tekstovi, slike, web aplikacije i svi ostali sadržaji na sajtu codeblog.rs (osim u slučajevima gde je drugačije navedeno) predstavljaju intelektualnu svojinu autora sajta codeblog.rs i zabranjeno je njihovo korišćenje na drugim sajtovima i štampanim medijima, kao i bilo kakvo drugo korišćenje u komercijalne svrhe, bez eksplicitnog pismenog odobrenja autora.
© 2020-2025. Sva prava zadržana.
Facebook LinkedIn Twitter Viber WhatsApp E-mail
početna > Članci > HTTP statusni kodovi
codeBlog codeBlog
Sajt posvećen popularizaciji kulture i veštine programiranja.
Napomena: Tekstovi i slike na sajtu codeblog.rs (osim u slučajevima, gde je drugačije navedeno) predstavljaju intelektualnu svojinu autora sajta codeblog.rs i zabranjeno je njihovo korišćenje na drugim sajtovima i štampanim medijima, kao i bilo kakvo drugo korišćenje u komercijalne svrhe, bez eksplicitnog odobrenja autora.
© 2020-2025. Sva prava zadržana.
Facebook - logo
Instagram - logo
LinkedIn - logo
Twitter - logo
E-mail
Naslovna
   •
Uslovi korišćenja
   •
Obaveštenja
   •
FAQ
   •
Kontakt