U svijetu web razvoja, HTTP kodovi pogrešaka igraju ključnu ulogu u utjecanju na korisničko iskustvo i ugled web stranice. U ovom ćemo članku razmotriti potpuni popis kodova pogrešaka poslužitelja, analizirati njihova značenja i naučiti kako učinkovito tumačiti kodove odgovora poslužitelja kako bismo riješili probleme i optimizirali izvedbu web-aplikacija.
Što je HTTP kod odgovora
HTTP kod odgovora je jezik web poslužitelja koji prevodi zahtjeve preglednika u razumljive upute. To je poput pjesnika koji odgovara na virtualna pitanja, dajući im značenje i smjer. Kodovi odgovora nisu uvijek HTTP kodovi grešaka. Na primjer, "200 OK" znači da je sve u redu, ali HTTP greška "404 nije pronađena" znači da je stranica izgubljena u virtualnom prostoru. Svaki kod je jedinstveni izraz stanja poslužitelja, čije nam dekodiranje omogućuje razumijevanje što se događa s druge strane virtualnog svijeta.
1xx kodovi (Informacije)
1xx statusni kodovi u HTTP protokolu su neka vrsta prve poveznice u dijalogu između poslužitelja i klijenta. Umjesto cjelovitog odgovora na zahtjev, oni daju informacije o trenutnom statusu, čineći razmjenu podataka učinkovitijom. Pogledajmo ih pobliže:
100 Nastavi . HTTP kod odgovora u kojem poslužitelj daje zeleno svjetlo korisniku, omogućujući mu siguran nastavak slanja velikog zahtjeva.
101 Promjena protokola . Poslužitelj obavještava klijenta da mijenja pravila igre, na primjer, prelazi s HTTP-a na sigurniji HTTPS. U ovom slučaju, za promjenu protokola koristi se zaglavlje „Upgrade“.
102 Obrada . Ovaj kod je poput poruke da je poslužitelj prihvatio zahtjev, ali je još uvijek zauzet složenom operacijom.
103 Rani savjeti . Ovdje poslužitelj šalje nekoliko indikativnih zaglavlja klijentu prije glavnog odgovora, upozoravajući na nešto što bi moglo biti relevantno u bliskoj budućnosti.
2xx kod (uspješno)
HTTP kodovi grešaka u grupi 2xx označavaju uspješan zahtjev poslužitelja. One u biti djeluju kao “zeleno svjetlo” u domeni web komunikacija, potvrđujući da sve ide po planu i da je uspješno završeno.
200 OK . Ovaj status se koristi kada poslužitelj bez problema obradi zahtjev GET metodom i vrati tražene podatke kao odgovor. Zaglavlje "Content-Type" u odgovoru izvještava o vrsti sadržaja. Samo obavještava klijenta da je zahtjev bio uspješan.
201 Kreirano . Ovdje poslužitelj objavljuje stvaranje novog resursa.
202 Prihvaćeno . Poslužitelj obavještava korisnika da je zahtjev prihvaćen, ali će trebati vremena za odgovor.
203 Neslužbene informacije . Ovaj kod pruža klijentu podatke koji možda nisu službeni, ali se mogu koristiti za usporedbu.
204 Nema sadržaja . Poslužitelj je obradio zahtjev, ali ne vraća nikakav dodatni sadržaj.
205 Resetiraj sadržaj . Ovdje se klijentu daje uputa da resetira trenutni prikaz ili podatke nakon slanja.
206 Djelomični sadržaj . Ovaj slučaj označava da odgovor sadrži samo dio traženog sadržaja. Zaglavlje "Content-Range" označava djelomični raspon sadržaja.
207 Višestruki status. Poslužitelj je uspješno dovršio zahtjev za više operacija od klijenta, a odgovor sadrži informacije o statusu svake od operacija.
226 Korišten IM . Ovaj kod označava da je poslužitelj koristio metodu inkrementalnih metapodataka (IM) i odgovorio prosljeđivanjem samo modificiranih dijelova resursa klijentu.
3xx kodovi (preusmjeravanja)
3xx kodovi u HTTP protokolu su poput pokazivača koji vode korisnika do nove lokacije resursa. Obavještavaju klijenta da se moraju poduzeti daljnji koraci za dobivanje traženog sadržaja ili za preusmjeravanje na drugi izvor. Uronimo u detalje svakog od njih:
300 Višestruki izbori . Klijent prima signal da postoji nekoliko mogućih lokacija za resurs i dobiva izbor kao odgovor. U trenutnim okolnostima, zaglavlje "Lokacija" može ukazivati na alternativne opcije za resurs.
301 Trajno premješteno. Poslužitelj izvještava korisnika da je resurs trajno premješten na drugu lokaciju.
Pronađeno je 302. Ovaj HTTP kod sličan je privremenom preusmjeravanju. Poslužitelj obavještava korisnika da je resurs privremeno dostupan na drugom URL-u. Zaglavlje "Lokacija" upućuje na novi URL za privremeno preusmjeravanje.
303 Vidi Ostalo . Klijentu se govori da je resurs dostupan na drugom URL-u i da mora poslati GET zahtjev na tu novu adresu.
304 Nije izmijenjeno . Ovaj status govori klijentu da je resurs ostao nepromijenjen od zadnjeg zahtjeva i da ga nije potrebno ponovno preuzeti. Prilikom slanja zahtjeva, zaglavlje "If-Modified-Since" koristi se za provjeru je li resurs izmijenjen.
305 Koristi proxy. Kao odgovor, poslužitelj izvještava da bi trebao koristiti navedeni proxy za pristup traženom resursu.
306 (rezervirano) — Kod je rezerviran, ali se zapravo ne koristi.
307 Privremeno preusmjeravanje . Ovaj kod je sličan kodu 302 Pronađeno, ali zahtijeva da klijent ostane u metodi zahtjeva koja je korištena u izvornom zahtjevu.
308 Trajno preusmjeravanje . Označava da je resurs trajno premješten na novi URI i da klijent treba koristiti novi URI za sve buduće zahtjeve.
4xx HTTP pogreška (pogreške klijenta)
HTTP 4xx kodovi pogrešaka označavaju pogreške klijenta. To znači da je problem na strani korisnika, kao što je web preglednik ili aplikacija.
400 Loš zahtjev . Poslužitelj ne može obraditi zahtjev zbog sintaktičkih pogrešaka, nevažećih podataka ili drugih pogrešaka na strani klijenta.
401 Neovlašteno. Poslužitelj ne može obraditi zahtjev zbog sintaktičkih pogrešaka, nevažećih podataka ili drugih pogrešaka na strani klijenta.
402 Potrebno je plaćanje . Kod trenutno nije aktivan i rezerviran je za buduću upotrebu. Može ukazivati na potrebu plaćanja prije pristupa resursu u budućnosti.
HTTP greška 403 Zabranjeno. Klijent nema dovoljna prava za pristup traženom resursu.
404 Nije pronađeno. Traženi resurs ne postoji na poslužitelju. Ovo je jedna od najčešćih korisničkih pogrešaka.
405 Metoda nije dopuštena . Poslužitelj ne podržava navedenu metodu zahtjeva tijekom ovog resursa. Zaglavlje "Dopusti" označava dopuštene metode za resurs. S ovim kodom,
406 Nije prihvatljivo. Poslužitelj ne može pružiti podatke u formatu koji klijent može prihvatiti.
407 Potrebna je proxy autentifikacija . Za pristup traženom resursu potrebna je provjera autentičnosti na proxy poslužitelju.
408 Istek vremena zahtjeva . Poslužitelj je čekao primitak zahtjeva od klijenta, ali je isteklo vrijeme. Zaglavlje "Retry-After" može označavati vrijeme nakon kojeg se zahtjev može ponovno pokušati.
409 Sukob. Zahtjev se ne može dovršiti zbog sukoba s trenutnim stanjem resursa.
410 Nestalo . Traženi resurs je prethodno postojao, ali je sada izbrisan i ne očekuje se njegova obnova.
411 Duljina Obavezna . Poslužitelj zahtijeva navođenje duljine sadržaja u zahtjevu; izostanak ove informacije smatra se pogreškom.
412 Preduvjet nije uspio . Preduvjet u zahtjevu nije ispunjen, što sprječava njegovo izvršenje.
413 Korisni teret prevelik . Veličina podataka zahtjeva premašuje ograničenja poslužitelja.
414 URI predugačak . Duljina URI-ja u zahtjevu prelazi prihvatljiva ograničenja.
415 Nepodržana vrsta medija . Poslužitelj ne može obraditi vrstu podataka navedenu u zahtjevu.
416 Raspon nije zadovoljavajući . HTTP pogreška gdje traženi raspon ne odgovara trenutnim podacima poslužitelja.
417 Očekivanje nije uspjelo . Očekivani uvjet u zaglavlju "Očekivanje" nije ispunjen.
418 Ja sam čajnik . Ovaj kod je uključen kao šala i ne podrazumijeva nikakvu stvarnu radnju za korisnika ili poslužitelja, te nije potpuna pogreška. Označava da je poslužitelj čajnik i da nije sposoban napraviti kavu.
421 Pogrešno usmjeren zahtjev . Poslužitelj ne obrađuje zahtjev zbog pogreške u zahtjevu ili konfiguraciji poslužitelja.
422 Neobradivi entitet . Poslužitelj razumije zahtjev, ali ga ne obrađuje zbog pogrešaka u podacima.
423 Zaključano. Resurs je blokiran i ne može se obraditi.
424 Neuspješna ovisnost . Zahtjev ovisi o drugom neizvršenom zahtjevu.
425 Prerano. Poslužitelj nije spreman obraditi zahtjev zbog njegovog ranog dolaska.
426 Potrebna nadogradnja . Poslužitelj zahtijeva korištenje naprednijeg protokola za obradu zahtjeva.
428 Potreban preduvjet . Poslužitelj zahtijeva da se u zahtjevu navedu određeni preduvjeti.
429 Previše zahtjeva . Klijent je poslao previše zahtjeva u kratkom vremenu, prekoračujući ograničenja poslužitelja.
431 Polja zaglavlja zahtjeva su prevelika . Zaglavlja zahtjeva premašuju maksimalnu dopuštenu veličinu.
449 Pokušaj ponovno s. Označava da zahtjev ne može pokrenuti trenutni poslužitelj, ali ga drugi poslužitelj može uspješno obraditi te da klijent treba ponovno pokušati zahtjev s novim URI-jem.
451 Nije dostupno iz pravnih razloga . Resurs nije dostupan iz pravnih razloga.
499 Klijent je zatvorio zahtjev . Poslužitelj je primio zahtjev, ali je klijent zatvorio vezu prije završetka obrade.
HTTP 5xx pogreška (pogreške poslužitelja)
HTTP 5xx kodovi grešaka ukazuju na probleme poslužitelja. Ovi kodovi označavaju probleme koji su se pojavili na strani poslužitelja, zbog čega poslužitelj nije u mogućnosti obraditi korisnikov zahtjev na pravi način. Pogledajmo ih pobliže:
HTTP pogreška 500 Interna pogreška poslužitelja . Poslužitelj nailazi na neočekivane okolnosti koje ga sprječavaju u dovršetku zahtjeva. Zaglavlje "Poslužitelj" može ukazivati na poslužitelj na kojem se dogodila pogreška.
501 Nije implementirano . Poslužitelj ne podržava funkcionalnost potrebnu za obradu klijentskog zahtjeva. Zaglavlje "Via" može ukazivati na proxy poslužitelj putem kojeg se dogodila pogreška.
502 Bad Gateway . Ovaj kod znači da je poslužitelj koji djeluje kao proxy primio netočan odgovor od drugog poslužitelja.
HTTP pogreška 503 Usluga nije dostupna . Poslužitelj trenutno ne može obraditi zahtjeve.
504 Gateway Timeout . Poslužitelj, koji djeluje kao proxy, nije pravovremeno primio odgovor od drugog poslužitelja.
505 HTTP verzija nije podržana . Poslužitelj ne podržava HTTP verziju protokola navedenu u zahtjevu. Kao rezervna opcija, zaglavlje "Nadogradnja" može naznačiti podržane protokole.
506 Varijanta također pregovara . Ovaj se status ne koristi u HTTP/1.1; međutim, ako poslužitelj otkrije internu konfiguraciju koja rezultira dvosmislenošću u pregovaranju sadržaja, može koristiti ovaj odgovor.
507 Nedovoljno prostora za pohranu . Poslužitelj ne može ispuniti zahtjev zbog nedovoljnog prostora za pohranu na poslužitelju.
508 Otkrivena petlja . Poslužitelj je otkrio petlju tijekom obrade zahtjeva i odbija dovršiti zahtjev kako bi izbjegao beskonačnu petlju.
509 Prekoračenje ograničenja propusnosti . Pogreška se javlja kada je prekoračena propusnost poslužitelja zbog velikog broja zahtjeva ili prometa.
510 Nije produženo . Klijent mora prenijeti dodatna proširenja kako bi nastavio zahtjev.
511 Potrebna je autentifikacija mreže . Klijent se mora autentificirati kako bi dobio pristup mreži.
Kako provjeriti kod statusa stranice
U ovom ćemo odjeljku razmotriti tri glavna načina provjere koda statusa stranice: putem naredbenog retka, korištenjem web preglednika i korištenjem neovisnih mrežnih usluga. Svaka od ovih metoda ima svoje prednosti i može biti korisna u različitim situacijama.
Provjera odgovora poslužitelja putem naredbenog retka
Naredbeni redak pruža praktičan način provjere koda statusa stranice bez potrebe za korištenjem web preglednika. Za ovu metodu morate otvoriti naredbeni redak i koristiti naredbu:
curl -I http://page-address
Ova naredba šalje zahtjev HEAD (zahtjev samo za zaglavlja) na navedeni URL i prikazuje informacije uključujući HTTP statusni kod:
Gornji primjer pokazuje uspješan kod odgovora. U slučaju odgovora koji sadrži kôd pogreške, kao što je 404 Not Found HTTP error, rezultat će izgledati slično:
Provjera odgovora poslužitelja putem konzole preglednika
Konzola za razvojne programere web preglednika pruža alate za provođenje raznih operacija, uključujući provjeru koda statusa stranice. Kako biste vidjeli HTTP kod u odgovoru poslužitelja, trebate otvoriti konzolu za razvojne programere (Ctrl+Shift+K) ili (Ctrl+shift+J) ovisno o korištenom pregledniku. Zatim odaberite odjeljak "mreža" i učitajte željenu stranicu:
Provjera odgovora poslužitelja pomoću neovisnih alata
Postoji velik broj neovisnih online servisa koji pružaju alate za provjeru statusnog koda web stranice. Ove usluge obično vam omogućuju brz pregled dostupnosti i performansi vašeg resursa. Sve rade na istom principu. Kao primjer, razmotrit ćemo najpopularniji resurs - httpsstatus.io
Najprije je potrebno otvoriti sam servis, zatim unijeti adresu stranice čiji odgovor trebate saznati i zatražiti verifikaciju:
Rezultat će biti prikazan na dnu stranice:
Zaključak
Zaključno, treba naglasiti da je razumijevanje i sposobnost čitanja HTTP kodova pogrešaka ključna vještina za svakoga tko se bavi web razvojem i održavanjem poslužitelja. Dok otkrivamo svaku pogrešku i istražujemo alate za njihovo otkrivanje, vidimo razloge zašto je toliko važno učinkovito upravljati ovim aspektima web usluga.