V svetu spletnega razvoja imajo kode napak HTTP ključno vlogo pri vplivanju na uporabniško izkušnjo in ugled spletnega mesta. V tem članku bomo preučili celoten seznam kod napak strežnika, analizirali njihove pomene in se naučili, kako učinkovito interpretirati odzivne kode strežnika, da bi rešili težave in optimizirali delovanje spletnih aplikacij.
Kaj je odzivna koda HTTP
Odzivna koda HTTP je jezik spletnih strežnikov, ki prevede zahteve brskalnika v razumljiva navodila. Je kot pesnik, ki odgovarja na virtualna vprašanja, jim daje pomen in smer. Odzivne kode niso vedno kode napak HTTP. Na primer, »200 OK« pomeni, da je vse v redu, vendar napaka HTTP »404 ni bilo mogoče najti« pomeni, da je stran izgubljena v virtualnem prostoru. Vsaka koda je edinstven izraz stanja strežnika, katerega dekodiranje nam omogoča razumevanje dogajanja na drugi strani virtualnega sveta.
1xx kode (Informacije)
Statusne kode 1xx v protokolu HTTP so nekakšen prvi člen v dialogu med strežnikom in odjemalcem. Namesto popolnega odgovora na zahtevo posredujejo informacije o trenutnem stanju, zaradi česar je izmenjava podatkov učinkovitejša. Oglejmo si jih pobližje:
100 Nadaljuj . Koda odgovora HTTP, v kateri strežnik uporabniku da zeleno luč, kar mu omogoča varno nadaljevanje pošiljanja velike zahteve.
101 Preklapljanje protokolov . Strežnik odjemalcu sporoči, da spreminja pravila igre, na primer, da prehaja s HTTP na varnejši HTTPS. V tem primeru se za spremembo protokola uporabi glava »Upgrade«.
102 Obdelava . Ta koda je kot sporočilo, da je strežnik sprejel zahtevo, vendar je še vedno zaposlen z zapleteno operacijo.
103 Zgodnji namigi . Tukaj strežnik pred glavnim odgovorom pošlje odjemalcu več indikativnih glav, ki opozarjajo na nekaj, kar bi lahko bilo pomembno v bližnji prihodnosti.
2xx koda (uspešno)
Kode napak HTTP v skupini 2xx kažejo na uspešno zahtevo strežnika. V bistvu delujejo kot »zelena luč« na področju spletnega komuniciranja, ki potrjuje, da vse poteka po načrtih in je uspešno zaključeno.
200 V redu . To stanje se uporabi, ko strežnik brez težav obdela zahtevo z metodo GET in v odgovor vrne zahtevane podatke. Glava »Content-Type« v odgovoru poroča o vrsti vsebine. Odjemalca le obvesti, da je bila zahteva uspešna.
201 Ustvarjeno . Tukaj strežnik naznani ustvarjanje novega vira.
202 Sprejeto . Strežnik obvesti uporabnika, da je bila zahteva sprejeta, vendar bo za odgovor potreboval nekaj časa.
203 Neavtoritativne informacije . Ta koda stranki zagotavlja podatke, ki morda niso uradni, vendar jih je mogoče uporabiti za primerjavo.
204 Ni vsebine . Strežnik je obdelal zahtevo, vendar ne vrača nobene dodatne vsebine.
205 Ponastavi vsebino . Tukaj je odjemalec naročen, da po pošiljanju ponastavi trenutni pogled ali podatke.
206 Delna vsebina . Ta primer pomeni, da odgovor vsebuje le del zahtevane vsebine. Glava »Content-Range« označuje delni obseg vsebine.
207 Večstopenjsko stanje. Strežnik je uspešno zaključil zahtevo odjemalca za več operacij, odgovor pa vsebuje informacije o stanju vsake od operacij.
226 Uporabljen IM . Ta koda označuje, da je strežnik uporabil metodo inkrementalnih metapodatkov (IM) in se odzval tako, da je odjemalcu posredoval le spremenjene dele vira.
3xx kode (preusmeritve)
Kode 3xx v protokolu HTTP so kot kazalci, ki vodijo uporabnika do nove lokacije vira. Stranko obvestijo, da je treba izvesti nadaljnje korake za pridobitev zahtevane vsebine ali za preusmeritev na drug vir. Poglobimo se v podrobnosti vsakega od njih:
300 Več možnosti . Odjemalec prejme signal, da obstaja več možnih lokacij za vir, in mu je kot odgovor ponujena izbira. V trenutnih okoliščinah lahko glava »Lokacija« navaja alternativne možnosti za vir.
301 Trajno premaknjeno. Strežnik sporoči uporabniku, da je bil vir trajno premaknjen na drugo lokacijo.
Najdeno 302. Ta koda HTTP je podobna začasni preusmeritvi. Strežnik obvesti potrošnika, da je vir začasno na voljo na drugem URL-ju. Glava »Lokacija« kaže na nov URL za začasno preusmeritev.
303 Glej Drugo . Odjemalcu se sporoči, da je vir na voljo na drugem URL-ju in mora na ta novi naslov poslati zahtevo GET.
304 Ni spremenjeno . To stanje odjemalcu sporoča, da se vir od zadnje zahteve ni spremenil in ga ni treba ponovno prenesti. Pri oddaji zahteve se za preverjanje, ali je bil vir spremenjen, uporabi glava »If-Modified-Since«.
305 Uporabi posredniški strežnik. Strežnik kot odgovor sporoči, da bi moral za dostop do zahtevanega vira uporabiti določeni posredniški strežnik.
306 (rezervirano) – Koda je rezervirana, vendar se dejansko ne uporablja.
307 Začasna preusmeritev . Ta koda je podobna kodi 302 Najdeno, vendar zahteva, da odjemalec ostane v metodi zahteve, ki je bila uporabljena v prvotni zahtevi.
308 Trajna preusmeritev . Označuje, da se je vir trajno premaknil na nov URI in da mora odjemalec za vse prihodnje zahteve uporabiti novi URI.
4xx Napaka HTTP (napake odjemalca)
Kode napak HTTP 4xx kažejo na napake odjemalca. To pomeni, da je težava na strani uporabnika, kot je spletni brskalnik ali aplikacija.
400 Slaba zahteva . Strežnik ne more obdelati zahteve zaradi sintaktičnih napak, neveljavnih podatkov ali drugih napak na strani odjemalca.
401 Nepooblaščeno. Strežnik ne more obdelati zahteve zaradi sintaktičnih napak, neveljavnih podatkov ali drugih napak na strani odjemalca.
402 Zahtevano plačilo . Koda trenutno ni aktivna in je rezervirana za prihodnjo uporabo. Morda bo v prihodnosti treba plačati, preden boste lahko dostopali do vira.
Napaka HTTP 403 Prepovedano. Odjemalec nima zadostnih pravic za dostop do zahtevanega vira.
404 Ni najdeno. Zahtevani vir ne obstaja na strežniku. To je ena najpogostejših uporabniških napak.
405 Metoda ni dovoljena . Strežnik ne podpira navedene metode zahteve v tem viru. Glava »Dovoli« označuje dovoljene metode za vir. S to kodo,
406 Ni sprejemljivo. Strežnik ne more zagotoviti podatkov v obliki, ki jo odjemalec lahko sprejme.
407 Zahtevana je avtentikacija posredniškega strežnika . Za dostop do zahtevanega vira je potrebna avtentikacija na posredniškem strežniku.
408 Časovna omejitev zahteve . Strežnik je čakal na prejem zahteve od odjemalca, vendar je časovna omejitev potekla. Glava »Retry-After« lahko označuje čas, po katerem je mogoče zahtevo ponovno poskusiti.
409 Konflikt. Zahteve ni mogoče dokončati zaradi konflikta s trenutnim stanjem vira.
410 Izginil . Zahtevani vir je prej obstajal, vendar je bil zdaj izbrisan in njegova obnovitev ni pričakovati.
411 Zahtevana dolžina . Strežnik zahteva, da v zahtevi navedete dolžino vsebine; odsotnost te informacije se šteje za napako.
412 Predpogoj ni uspel . Predpogoj v zahtevi ni izpolnjen, kar preprečuje njeno izvedbo.
413 Prevelik koristni tovor . Velikost podatkov zahteve presega omejitve strežnika.
414 URI je predolg . Dolžina URI-ja v zahtevi presega sprejemljive omejitve.
415 Nepodprta vrsta medija . Strežnik ne more obdelati vrste podatkov, navedene v zahtevi.
416 Obseg ni zadovoljiv . Napaka HTTP, kjer zahtevani obseg ne ustreza trenutnim podatkom strežnika.
417 Pričakovanje ni uspelo . Pričakovani pogoj v glavi »Pričakuj« ni bil izpolnjen.
418 Jaz sem čajnik . Ta koda je vključena kot šala in ne pomeni nobenega dejanskega dejanja za uporabnika ali strežnika in ni popolna napaka. Označuje, da je strežnik čajnik in ni sposoben pripraviti kave.
421 Napačno usmerjena zahteva . Strežnik ne obdela zahteve zaradi napake v zahtevi ali konfiguraciji strežnika.
422 Neobdelovalna entiteta . Strežnik razume zahtevo, vendar je zaradi napak v podatkih ne obdela.
423 Zaklenjeno. Vir je blokiran in ga ni mogoče obdelati.
424 Neuspešna odvisnost . Zahteva je odvisna od druge neizvršene zahteve.
425 Prezgodaj. Strežnik ni pripravljen za obdelavo zahteve, ker je prispela prezgodaj.
426 Potrebna je nadgradnja . Strežnik za obdelavo zahteve zahteva uporabo naprednejšega protokola.
428 Zahtevan predpogoj . Strežnik zahteva, da so v zahtevi navedeni določeni predpogoji.
429 Preveč zahtev . Odjemalec je v kratkem času poslal preveč zahtev, kar presega omejitve strežnika.
431 Polja glave zahteve so prevelika . Glave zahteve presegajo največjo dovoljeno velikost.
449 Poskusi znova z. Označuje, da trenutnega strežnika ni mogoče izvesti zahteve, vendar jo lahko uspešno obdela drug strežnik, in odjemalec mora zahtevo poskusiti znova z novim URI-jem.
451 Ni na voljo zaradi pravnih razlogov . Vir ni na voljo zaradi pravnih razlogov.
499 Zahteva odjemalca zaprta . Strežnik je prejel zahtevo, vendar je odjemalec povezavo prekinil pred zaključkom obdelave.
Napaka HTTP 5xx (napake strežnika)
Kode napak HTTP 5xx kažejo na težave s strežnikom. Te kode označujejo težave, ki so se pojavile na strani strežnika, zaradi česar strežnik ne more obdelati uporabnikove zahteve na pravi način. Oglejmo si jih pobližje:
Napaka HTTP 500 Notranja napaka strežnika . Strežnik naleti na nepričakovane okoliščine, ki mu preprečujejo dokončanje zahteve. Glava »Strežnik« lahko označuje strežnik, na katerem je prišlo do napake.
501 Ni implementirano . Strežnik ne podpira funkcionalnosti, potrebne za obdelavo zahteve odjemalca. Glava »Via« lahko označuje proxy strežnik, prek katerega je prišlo do napake.
502 Slab prehod . Ta koda pomeni, da je strežnik, ki deluje kot posrednik, prejel napačen odgovor od drugega strežnika.
Napaka HTTP 503 Storitev ni na voljo . Strežnik trenutno ne more obdelati zahtev.
504 Časovna omejitev prehoda . Strežnik, ki deluje kot posrednik, ni prejel pravočasnega odgovora od drugega strežnika.
505 Različica HTTP ni podprta . Strežnik ne podpira različice protokola HTTP, navedene v zahtevi. Kot rezervna možnost lahko glava »Nadgradnja« navaja podprte protokole.
506 Različica se tudi pogaja . Ta status se v HTTP/1.1 ne uporablja; če pa strežnik zazna notranjo konfiguracijo, ki povzroči dvoumnost pri pogajanjih o vsebini, lahko uporabi ta odgovor.
507 Nezadosten prostor za shranjevanje . Strežnik ne more izpolniti zahteve zaradi nezadostnega prostora za shranjevanje na strežniku.
508 Zaznana zanka . Strežnik je med obdelavo zahteve zaznal zanko in zavrne dokončanje zahteve, da bi se izognil neskončni zanki.
509 Presežena omejitev pasovne širine . Do napake pride, ko je pasovna širina strežnika presežena zaradi velike količine zahtev ali prometa.
510 Ni podaljšano . Odjemalec mora prenesti dodatne razširitve, da lahko nadaljuje z zahtevo.
511 Zahtevana je overitev omrežja . Odjemalec se mora overiti, da lahko dostopa do omrežja.
Kako preveriti kodo stanja strani
V tem razdelku bomo obravnavali tri glavne načine za preverjanje kode stanja strani: prek ukazne vrstice, z uporabo spletnega brskalnika in z uporabo neodvisnih spletnih storitev. Vsaka od teh metod ima svoje prednosti in je lahko uporabna v različnih situacijah.
Preverjanje odziva strežnika prek ukazne vrstice
Ukazna vrstica nudi priročen način za preverjanje kode stanja strani, ne da bi morali uporabljati spletni brskalnik. Za to metodo morate odpreti ukazno vrstico in uporabiti ukaz:
curl -I http://page-address
Ta ukaz pošlje zahtevo HEAD (zahteva samo za glave) na navedeni URL in prikaže informacije, vključno s statusno kodo HTTP:
Zgornji primer prikazuje kodo uspešnega odziva. V primeru odgovora, ki vsebuje kodo napake, kot je napaka 404 Not Found HTTP, bo rezultat videti podoben:
Preverjanje odziva strežnika prek konzole brskalnika
Konzola za razvijalce spletnega brskalnika ponuja orodja za izvajanje različnih operacij, vključno s preverjanjem kode stanja strani. Če želite videti kodo HTTP v odgovoru strežnika, morate odpreti konzolo za razvijalce (Ctrl+Shift+K) ali (Ctrl+shift+J), odvisno od uporabljenega brskalnika. Nato izberite razdelek »omrežje« in naložite želeno stran:
Preverjanje odziva strežnika z neodvisnimi orodji
Obstaja veliko število neodvisnih spletnih storitev, ki ponujajo orodja za preverjanje kode stanja spletne strani. Te storitve vam običajno omogočajo hiter pregled razpoložljivosti in delovanja vašega vira. Vse delujejo po istem principu. Kot primer bomo obravnavali najbolj priljubljen vir - httpsstatus.io.
Najprej morate odpreti samo storitev, nato vnesti naslov strani, katere odgovor morate najti, in zahtevati preverjanje:
Rezultat bo prikazan na dnu strani:
zaključek
Na koncu je treba poudariti, da sta razumevanje in zmožnost branja kod napak HTTP ključna veščina za vse, ki se ukvarjajo s spletnim razvojem in vzdrževanjem strežnikov. Ko ugotavljamo vsako napako in raziskujemo orodja za njihovo odkrivanje, vidimo razloge, zakaj je tako pomembno učinkovito upravljati te vidike spletnih storitev.