U svijetu web razvoja, HTTP kodovi grešaka igraju vitalnu ulogu u utjecaju na korisničko iskustvo i reputaciju web stranice. U ovom članku ćemo razmotriti potpunu listu serverskih kodova grešaka, analizirati njihova značenja i naučiti kako efikasno tumačiti kodove odgovora servera kako bismo riješili probleme i optimizirali performanse web aplikacija.
Šta je HTTP kod odgovora
HTTP kod odgovora je jezik web servera koji zahtjeve pretraživača prevodi u razumljiva uputstva. To je poput pjesnika koji odgovara na virtuelna 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 Not Found” znači kada je stranica izgubljena u virtuelnom prostoru. Svaki kod je jedinstveni izraz stanja servera, čije dekodiranje nam omogućava da shvatimo šta se dešava na drugoj strani virtuelnog sveta.
1xx kodovi (Informacije)
1xx statusni kodovi u HTTP protokolu su neka vrsta prve veze u dijalogu između servera i klijenta. Umjesto kompletnog odgovora na zahtjev, oni pružaju informacije o trenutnom statusu, čineći razmjenu podataka efikasnijom. Pogledajmo ih izbliza:
100 Nastavite. HTTP kod odgovora u kojem server daje zeleno svjetlo korisniku, omogućavajući mu da sigurno nastavi slanje velikog zahtjeva.
101 Protokoli za prebacivanje. Server govori klijentu da mijenja pravila igre, na primjer, prelazi sa HTTP-a na sigurniji HTTPS. U ovom slučaju, zaglavlje “Upgrade” se koristi za promjenu protokola.
102 Obrada. Ovaj kod je poput poruke da je server prihvatio zahtjev, ali je još uvijek zauzet složenom operacijom.
103 Rani savjeti. Ovdje server š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ške u grupi 2xx ukazuju na uspješan zahtjev od servera. Oni u suštini djeluju kao „zeleno svjetlo“ u domenu web komunikacija, potvrđujući da sve ide po planu i da je uspješno završeno.
200 OK. Ovaj status se koristi kada server obradi zahtjev metodom GET bez problema i kao odgovor vraća tražene podatke. Zaglavlje "Content-Type" prijavljuje tip sadržaja u odgovoru. To samo obavještava klijenta da je zahtjev bio uspješan.
201 Created. Ovdje server najavljuje kreiranje novog resursa.
202 Prihvaćeno. Server obavještava korisnika da je zahtjev prihvaćen, ali će trebati vremena da odgovori.
203 Ne-autoritativne informacije. Ovaj kod pruža klijentu podatke koji možda nisu zvanični, ali se mogu koristiti za poređenje.
204 Nema sadržaja. Server je obradio zahtjev, ali ne vraća nikakav dodatni sadržaj.
205 Resetuj sadržaj. Ovdje se klijentu nalaže da resetuje trenutni prikaz ili podatke nakon slanja.
206 Djelomični sadržaj. Ovaj slučaj ukazuje da odgovor sadrži samo dio traženog sadržaja. Zaglavlje "Content-Range" označava djelomični raspon sadržaja.
207 Multi-Status. Server je uspješno završio zahtjev za više operacija od klijenta, a odgovor sadrži informacije o statusu svake od operacija.
226 IM Korišteno. Ovaj kod ukazuje na to da je server 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 na novu lokaciju resursa. Oni obavještavaju klijenta da se moraju poduzeti daljnji koraci kako bi se dobio traženi sadržaj ili bi se preusmjerio na drugi resurs. Uronimo u detalje svakog od njih:
300 višestrukih izbora. Klijent prima signal da postoji nekoliko mogućih lokacija za resurs i daje mu izbor kao odgovor. U trenutnim okolnostima, zaglavlje "Lokacija" može ukazivati na alternativne opcije za resurs.
301 Trajno preseljeno. Server izvještava korisnika da je resurs trajno premješten na drugu lokaciju.
302 Pronađeno. Ovaj HTTP kod je sličan privremenom preusmjeravanju. Server obavještava potrošača da je resurs privremeno dostupan na drugom URL-u. Zaglavlje "Lokacija" ukazuje na novi URL za privremeno preusmjeravanje.
303 Vidi Ostalo. Klijentu se kaže da je resurs dostupan na drugom URL-u i da mora napraviti GET zahtjev na ovu novu adresu.
304 nije modifikovan. Ovaj status govori klijentu da je resurs ostao nepromijenjen od posljednjeg zahtjeva i da ga ne treba ponovo preuzimati. Prilikom postavljanja zahtjeva, zaglavlje "If-Modified-Since" se koristi za provjeru da li je resurs izmijenjen.
305 Koristi proxy. Kao odgovor, server izvještava da bi trebao koristiti navedeni proxy za pristup traženom resursu.
306 (rezervisano) — Kod je rezervisan, ali se u stvari ne koristi.
307 Privremeno preusmjeravanje. Ovaj kod je sličan 302 Found, ali zahtijeva da klijent ostane u metodi zahtjeva koja je korištena u originalnom zahtjevu.
308 Trajno preusmjeravanje. Označava da je resurs trajno prešao na novi URI i da bi klijent trebao koristiti novi URI za sve buduće zahtjeve.
4xx HTTP greška (greške klijenta)
HTTP 4xx kodovi greške ukazuju na greške klijenta. To znači da je problem na strani korisnika, kao što je web preglednik ili aplikacija.
400 Bad Zahtev. Server ne može obraditi zahtjev zbog sintaksičkih grešaka, nevažećih podataka ili drugih grešaka na strani klijenta.
401 Neovlašteno. Server ne može obraditi zahtjev zbog sintaksičkih grešaka, nevažećih podataka ili drugih grešaka na strani klijenta.
402 Obavezno plaćanje. Kôd trenutno nije aktivan i rezerviran je za buduću upotrebu. To može ukazivati na potrebu plaćanja prije pristupa resursu u budućnosti.
HTTP greška 403 Zabranjeno. Klijent nema dovoljno prava za pristup traženom resursu.
404 nije pronađeno. Traženi resurs ne postoji na serveru. Ovo je jedna od najčešćih grešaka korisnika.
405 metod nije dozvoljen. Server ne podržava navedenu metodu zahtjeva u toku ovog resursa. Zaglavlje „Dozvoli“ označava dozvoljene metode za resurs. Sa ovim kodom,
406 Nije prihvatljivo. Server ne može pružiti podatke u formatu koji može prihvatiti klijent.
407 Potrebna je proxy autentifikacija. Za pristup traženom resursu potrebna je autentifikacija na proxy serveru.
408 Vrijeme čekanja zahtjeva. Server je čekao da primi zahtjev od klijenta, ali je isteklo vrijeme. Zaglavlje "Retry-After" može ukazivati na vrijeme nakon kojeg se zahtjev može ponoviti.
409 Sukob. Zahtjev se ne može dovršiti zbog sukoba s trenutnim stanjem resursa.
410 Gone. Traženi resurs je ranije postojao, ali je sada obrisan i ne očekuje se njegova obnova.
411 Potrebna dužina. Server zahteva da navede dužinu sadržaja u zahtevu; odsustvo ove informacije smatra se greškom.
412 Preduvjet nije uspio. Preduslov u zahtjevu nije ispunjen, koji sprječava njegovo izvršenje.
413 Nosivost je prevelika. Veličina podataka zahtjeva premašuje ograničenja servera.
414 URI predugačak. Dužina URI-ja u zahtjevu premašuje prihvatljiva ograničenja.
415 Nepodržana vrsta medija. Server ne može obraditi tip podataka koji je naveden u zahtjevu.
416 Raspon nije zadovoljavajući. HTTP greška gdje traženi raspon ne odgovara trenutnim podacima servera.
417 Očekivanje nije uspjelo. Očekivani uslov u zaglavlju "Očekujte" nije ispunjen.
418 Ja sam čajnik. Ovaj kod je uključen kao šala i ne podrazumijeva nikakvu stvarnu akciju za korisnika ili servera i nije potpuna greška. Označava da je server čajnik i da nije u stanju da napravi kafu.
421 Pogrešno usmjeren zahtjev. Server ne obrađuje zahtjev zbog greške u zahtjevu ili konfiguraciji servera.
422 Neprocesni entitet. Server razumije zahtjev, ali ga ne obrađuje zbog grešaka u podacima.
423 Zaključano. Resurs je blokiran i ne može se obraditi.
424 Neuspješna ovisnost. Zahtjev zavisi od drugog neizvršenog zahtjeva.
425 Prerano. Server nije spreman za obradu zahtjeva zbog njegovog ranog dolaska.
426 Potrebna je nadogradnja. Server zahtijeva korištenje naprednijeg protokola za obradu zahtjeva.
428 Potreban preduslov. Server zahtijeva da se u zahtjevu navedu određeni preduslovi.
429 Previše zahtjeva. Klijent je poslao previše zahtjeva u kratkom vremenu, premašujući ograničenja servera.
431 Polja zaglavlja zahtjeva su prevelika. Zaglavlja zahtjeva premašuju maksimalno dozvoljenu veličinu.
449 Pokušaj ponovo sa. Označava da zahtjev ne može pokrenuti trenutni server, ali ga može uspješno obraditi drugi server, a klijent bi trebao ponovo pokušati zahtjev s novim URI-jem.
451 Nedostupno iz pravnih razloga. Izvor je nedostupan iz pravnih razloga.
499 Zahtjev klijenta zatvoren. Server je primio zahtjev, ali je klijent zatvorio vezu prije završetka obrade.
HTTP 5xx greška (greške servera)
HTTP 5xx kodovi greške ukazuju na probleme sa serverom. Ovi kodovi ukazuju na probleme koji su se dogodili na strani servera, zbog čega server nije u mogućnosti da obradi zahtjev korisnika na pravi način. Pogledajmo ih izbliza:
HTTP greška 500 Interna greška servera. Server nailazi na neočekivane okolnosti koje ga sprečavaju da završi zahtjev. Zaglavlje "Server" može ukazivati na server na kojem je došlo do greške.
501 Nije primenjeno. Server ne podržava funkcionalnost potrebnu za obradu zahtjeva klijenta. Zaglavlje "Via" može ukazivati na proxy server preko kojeg je došlo do greške.
502 Bad Gateway. Ovaj kod znači da je server koji djeluje kao proxy dobio pogrešan odgovor od drugog servera.
HTTP Greška 503 servis nije dostupan. Server privremeno nije u mogućnosti obraditi zahtjeve.
Istek vremena izlaznog prolaza 504. Server, koji djeluje kao proxy, nije primio pravovremeni odgovor od drugog servera.
505 HTTP verzija nije podržana. Server ne podržava verziju HTTP protokola navedenu u zahtjevu. Kao rezervna opcija, zaglavlje "Nadogradnja" može ukazivati na podržane protokole.
506 Varijanta također pregovara. Ovaj status se ne koristi u HTTP/1.1; međutim, ako poslužitelj otkrije internu konfiguraciju koja rezultira dvosmislenošću pregovaranja o sadržaju, može koristiti ovaj odgovor.
507 Nedovoljno skladište. Server ne može ispuniti zahtjev zbog nedovoljnog prostora za skladištenje na serveru.
508 Loop Detected. Server je otkrio petlju tokom obrade zahtjeva i odbija dovršiti zahtjev kako bi izbjegao beskonačnu petlju.
509 Prekoračeno ograničenje propusnosti. Greška se javlja kada je propusni opseg servera prekoračen zbog velikog obima zahtjeva ili prometa.
510 Nije prošireno. Klijent mora prenijeti dodatne ekstenzije da nastavi zahtjev.
511 Potrebna je mrežna autentikacija. Klijent se mora autentifikovati da bi dobio pristup mreži.
Kako provjeriti statusni kod stranice
U ovom odjeljku ćemo razmotriti tri glavna načina za provjeru statusnog koda stranice: putem komandne linije, korištenjem web pretraživača i korištenjem nezavisnih online usluga. Svaka od ovih metoda ima svoje prednosti i može biti korisna u različitim situacijama.
Provjera odgovora servera putem komandne linije
Komandna linija pruža zgodan način za provjeru statusnog koda stranice bez potrebe za korištenjem web pretraživača. Za ovu metodu, morate otvoriti komandnu liniju i koristiti naredbu:
curl -I http://page-address
Ova komanda šalje HEAD zahtjev (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 kod greške, kao što je 404 Not Found HTTP greška, rezultat će izgledati slično:
Provjera odgovora servera putem konzole pretraživača
Konzola za programere web pretraživača pruža alate za izvođenje različitih operacija, uključujući provjeru statusnog koda stranice. Da biste vidjeli HTTP kod u odgovoru servera, morate otvoriti konzolu za programere (Ctrl+Shift+K) ili (Ctrl+shift+J) ovisno o korištenom pretraživaču. Zatim odaberite odjeljak "mreža" i učitajte željenu stranicu:
Provjera odgovora servera korištenjem nezavisnih alata
Postoji veliki broj nezavisnih online servisa koji pružaju alate za provjeru statusnog koda web stranice. Ove usluge vam obično omogućavaju da brzo dobijete pregled dostupnosti i performansi vašeg resursa. Svi rade po istom principu. Kao primjer, razmotrit ćemo najpopularniji resurs - httpstatus.io
Prije svega, potrebno je da otvorite sam servis, zatim unesete adresu stranice na kojoj želite da saznate odgovor i zatražite verifikaciju:
Rezultat će biti prikazan na dnu stranice:
zaključak
U zaključku, treba naglasiti da je razumijevanje i sposobnost čitanja HTTP kodova grešaka ključna vještina za svakoga tko je uključen u web razvoj i održavanje servera. Dok otkrivamo svaku grešku i istražujemo alate za njihovo otkrivanje, vidimo razloge zašto je toliko važno efikasno upravljati ovim aspektima web usluga.