HTTP olekukoodid on standardkoodid, mida veebiserverid kasutavad kliendi (näiteks brauseri) teavitamiseks nende päringute tulemustest. Need koodid on määratletud HTTP spetsifikatsioonides ning neid kasutatakse taotletud ressursi oleku tuvastamiseks ja teabe andmiseks selle kohta, milliseid toiminguid tuleb päringu lõpuleviimiseks teha.
Ajalugu ja eesmärk
HTTP olekukoodid võeti kasutusele HTTP spetsifikatsioonis, et pakkuda standardiseeritud suhtlusviisi veebiserverite ja klientide vahel. Need koodid aitavad automatiseerida tõrgete käsitlemist, suunata kliendi edasisi toiminguid ja anda diagnostilist teavet. Need eristavad edukaid ja ebaõnnestunud päringuid ning ümbersuunamisi ja viitavad konkreetsetele probleemidele.
Olekukoodide struktuur ja vahemikud
HTTP olekukoodid on kolmekohalised arvud. Esimene number määrab olekuklassi, osutades vastuse üldisele tüübile. Olekuid on viis klassi:
- 1xx: Teabega vastused
- Need koodid näitavad, et päring on vastu võetud ja protsess jätkub.
- 2xx: Edukad vastused
- Need koodid näitavad, et päring võeti edukalt vastu, sellest saadi aru ja see aktsepteeriti.
- 3xx: Ümbersuunamine
- Need koodid näitavad, et päringu lõpuleviimiseks peab klient tegema täiendavaid toiminguid.
- 4xx: Kliendipoolsed vead
- Need koodid näitavad kliendi valedest päringutest põhjustatud vigu.
- 5xx: Serveripoolsed vead
- Need koodid näitavad serveripoolsetest tõrgetest põhjustatud vigu.
Olekukoodide üksikasjalik kirjeldus
1xx: Teabega vastused
- 100 Continue: Server on päringu algosa vastu võtnud ja klient peaks jätkama.
- 101 Switching Protocols: Server nõustub kliendi soovitud viisil protokolle vahetama.
- 102 Processing: Server on päringu vastu võtnud, kuid töötlemine ei ole lõppenud.
2xx: Edukad vastused
- 200 OK: Päring töödeldi edukalt ja server tagastas taotletud ressursi.
- 201 Created: Päring täideti edukalt ja loodi uus ressurss.
- 202 Accepted: Päring on töötlemiseks vastu võetud, kuid töötlemine ei ole lõppenud.
- 203 Non-Authoritative Information: Päring töödeldi edukalt, kuid teave pärineb teisest allikast.
- 204 No Content: Päring töödeldi edukalt, kuid vastuses ei ole saadetavat sisu.
- 205 Reset Content: Päring töödeldi edukalt ja klient peaks vaate lähtestama.
- 206 Partial Content: Server tagastab vahemikupäringule vastuseks osa sisust.
3xx: Ümbersuunamine
- 300 Multiple Choices: Päringu saab täita mitmel viisil.
- 301 Moved Permanently: Taotletud ressurss on püsivalt uuele URL-ile teisaldatud.
- 302 Found: Taotletud ressurss on ajutiselt saadaval teisel URL-il.
- 303 See Other: Ressurss tuleks hankida GET-päringu abil teiselt URL-ilt.
- 304 Not Modified: Taotletud ressurssi ei ole pärast viimast päringut muudetud.
- 305 Use Proxy: Taotletud ressursile tuleb juurde pääseda puhverserveri kaudu.
- 307 Temporary Redirect: Taotletud ressurss on ajutiselt saadaval teisel URL-il.
- 308 Permanent Redirect: Taotletud ressurss on püsivalt uuele URL-ile teisaldatud.
4xx: Kliendipoolsed vead
- 400 Bad Request: Server ei saa kliendipoolse vea tõttu päringut töödelda.
- 401 Unauthorized: Ressursile juurdepääsuks on vaja autentimist.
- 402 Payment Required: Kood on reserveeritud edaspidiseks kasutuseks.
- 403 Forbidden: Server keeldub päringut täitmast.
- 404 Not Found: Taotletud ressurssi ei leitud.
- 405 Method Not Allowed: Päringumeetod ei ole taotletud ressursi jaoks lubatud.
- 406 Not Acceptable: Taotletud ressurssi ei saa pakkuda vastuvõetavas vormingus.
- 407 Proxy Authentication Required: Vajalik on puhverserveri autentimine.
- 408 Request Timeout: Päringu ajalõpp saabus.
- 409 Conflict: Päringut ei saa töödelda ressursi praeguse olekuga konflikti tõttu.
- 410 Gone: Taotletud ressurss ei ole enam saadaval ega muutu enam saadavaks.
- 411 Length Required: Päringus tuleb määrata sisu pikkus.
- 412 Precondition Failed: Päringu päistes olev eeltingimus on väär.
- 413 Payload Too Large: Päringu sisu on suurem, kui server on valmis või võimeline töötlema.
- 414 URI Too Long: Päringu URI on liiga pikk.
- 415 Unsupported Media Type: Päringu sisul on meediatüüp, mida server või ressurss ei toeta.
- 416 Range Not Satisfiable: Klient on küsinud faili osa, kuid server ei saa seda osa edastada.
- 417 Expectation Failed: Server ei saa täita päringu päisevälja Expect nõudeid.
- 418 I’m a teapot: RFC 2324-s kasutusele võetud humoorikas kood.
5xx: Serveripoolsed vead
- 500 Internal Server Error: Üldine veateade, kui serveris ilmneb ootamatu olukord.
- 501 Not Implemented: Server ei toeta päringu täitmiseks vajalikku funktsionaalsust.
- 502 Bad Gateway: Server sai sissetulevalt serverilt kehtetu vastuse.
- 503 Service Unavailable: Server ei ole praegu saadaval.
- 504 Gateway Timeout: Server ei saanud ülesvoolu serverilt õigeaegset vastust.
- 505 HTTP Version Not Supported: Server ei toeta päringus kasutatud HTTP versiooni.
- 506 Variant Also Negotiates: Päringu läbipaistev sisuläbirääkimine põhjustab ringviite.
- 507 Insufficient Storage: Server ei suuda salvestada päringu lõpuleviimiseks vajalikku esitust.
- 508 Loop Detected: Server tuvastas päringu töötlemisel lõpmatu tsükli.
- 510 Not Extended: Server vajab päringu täitmiseks täiendavaid päringulaiendusi.
- 511 Network Authentication Required: Võrgule juurdepääsuks on vaja autentimist.
Kokkuvõte
HTTP olekukoodidel on veebirakenduste ja -teenuste toimimises oluline roll. Need võimaldavad standardiseeritud suhtlust serverite ja klientide vahel, aidates hallata andmevoogu ja käsitleda vigu. Nende koodide mõistmine on arendajatele ja administraatoritele oluline, sest see võimaldab probleeme tõhusalt lahendada ja veebiressursse optimeerida.
