Siirry sisältöön

Tekniikka arjessa

HTTP-statuskoodit – täydellinen opas, selitykset ja lista

Mitä 404, 403 tai 503 tarkoittaa? Katso HTTP-statuskoodien viisi luokkaa, rekisteröityjen koodien lista ja käytännön vianetsintäohjeet.

Lyhyesti

HTTP-statuskoodi kertoo HTTP-pyynnön tuloksesta. Ensimmäinen numero ilmaisee luokan: 1xx on väliaikainen tieto, 2xx onnistuminen, 3xx jatkotoimia edellyttävä vastaus, 4xx pyyntöön liittyvä virhe ja 5xx palvelinvirhe. Esimerkiksi 200 tarkoittaa onnistumista, 404 sitä, ettei pyydettyä resurssia löydy, ja 503 palvelun tilapäistä saatavuusongelmaa. Pelkkä koodi ei yleensä kerro ongelman tarkkaa syytä.

Oppaan luokittelu ja selitykset perustuvat MDN:n statuskoodiviitteeseen. Koodien nimet ja rekisteröintitilat on tarkistettu IANA-rekisteristä 30.9.2026. Lista erottaa myös väliaikaiset, käytöstä poistuneet ja käyttämättömiksi merkityt koodit.

Mitä HTTP-statuskoodi kertoo?

HTTP-vastauksen statuskoodi ilmaisee, miten tietyn pyynnön käsittely sujui. Merkitys riippuu myös pyynnöstä: esimerkiksi 200 OK tarkoittaa GET-pyynnössä haetun resurssin palauttamista, kun taas HEAD-pyynnön onnistunut vastaus sisältää otsakkeet ilman vastausrunkoa. Statuskoodi ei siis yksin kuvaa kaikkea vastauksen sisältöä. Lähde: MDN.

  • 100–199, informatiiviset vastaukset: pyyntö on vastaanotettu ja käsittely jatkuu.
  • 200–299, onnistuneet vastaukset: pyyntö on vastaanotettu, ymmärretty ja hyväksytty.
  • 300–399, uudelleenohjausluokka: pyynnön loppuun saattaminen edellyttää jatkotoimia. Kaikki tämän luokan vastaukset eivät tarkoita siirtymistä toiseen osoitteeseen.
  • 400–499, asiakasvirheet: pyynnössä on virhe tai sitä ei voida toteuttaa. Luokan nimi ei tarkoita, että selaimen käyttäjä olisi välttämättä tehnyt jotakin väärin.
  • 500–599, palvelinvirheet: palvelin ei pystynyt toteuttamaan näennäisesti kelvollista pyyntöä.

Luokkien määritelmät ovat IANA-rekisterissä. Esimerkiksi 304 Not Modified kuuluu 3xx-luokkaan, mutta se käskee käyttämään välimuistissa olevaa versiota eikä ohjaa uuteen osoitteeseen. Lähde: MDN.

HTTP-statuskoodien lista

Alla ovat IANA-rekisterin yksittäisinä arvoina luettelemat koodit, myös käyttämättömät ja vanhentuneet merkinnät. Varaamattomia numeroalueita ei ole lueteltu riveittäin. Englanninkieliset nimet ja rekisteröintitilat perustuvat IANAan; toiminnan tiivistelmät perustuvat MDN:ään. WebDAV- ja muut erikoiskoodit on mukana tunnistamista varten, ei suosituksena käyttää niitä tavallisessa verkkopalvelussa.

HTTP-statuskoodit ja niiden merkitykset, tarkistettu 30.9.2026
Koodi ja nimi Merkitys tai tila
100 Continue Asiakas voi jatkaa pyynnön lähettämistä. Jos pyyntö on jo valmis, välivastauksen voi sivuuttaa.
101 Switching Protocols Palvelin vaihtaa protokollaa asiakkaan Upgrade-pyynnön mukaisesti.
102 Processing Historiallinen WebDAV-välivastaus käsittelyssä olevasta pyynnöstä. IANA listaa koodin, mutta MDN merkitsee sen käytöstä poistetuksi.
103 Early Hints Ennakkovihjeitä esimerkiksi resurssien esilataamiseen tai yhteyksien valmisteluun ennen lopullista vastausta.
104 Upload Resumption Supported Väliaikainen rekisteröinti. IANAn 30.9.2026 tarkistetussa rekisterissä voimassaolon päättymispäivä on 13.11.2026.
200 OK Pyyntö onnistui. Vastauksen sisältö riippuu HTTP-metodista.
201 Created Pyyntö onnistui ja sen tuloksena luotiin uusi resurssi.
202 Accepted Pyyntö hyväksyttiin käsiteltäväksi, mutta käsittelyä ei ole vielä saatettu loppuun. Ei vahvista lopputuloksen onnistumista.
203 Non-Authoritative Information Pyyntö onnistui, mutta muuntava välityspalvelin on muuttanut alkuperäpalvelimen 200-vastauksen sisältöä.
204 No Content Pyyntöön ei palauteta sisältöä. Vastauksen otsakkeet voivat silti olla hyödyllisiä.
205 Reset Content Asiakkaan tulisi palauttaa pyynnön lähettänyt dokumentti alkutilaan.
206 Partial Content Vastaus sisältää pyydetyn osan tai osat resurssista.
207 Multi-Status WebDAV-vastaus sisältää tilatietoja useista resursseista.
208 Already Reported WebDAV-vastauksen sisäinen merkintä, jolla vältetään samojen kokoelman jäsenten toistuva luettelointi.
226 IM Used HTTP:n delta-koodaukseen liittyvä vastaus: GET-pyynnön tulos kuvaa resurssin esitykseen tehtyjä muunnoksia.
300 Multiple Choices Pyynnölle on useita mahdollisia vastauksia, joista asiakkaan tai käyttäjän pitää valita.
301 Moved Permanently Resurssin osoite on muuttunut pysyvästi. Uusi osoite annetaan vastauksessa.
302 Found Resurssin osoite on muuttunut tilapäisesti.
303 See Other Asiakas ohjataan toiseen resurssiin, josta alkuperäiseen pyyntöön liittyvä vastaus voidaan hakea GET- tai HEAD-pyynnöllä.
304 Not Modified Välimuistissa olevan version käyttöä voi jatkaa, koska vastaus ei ole muuttunut.
305 Use Proxy Vanha välityspalvelimen käyttöön ohjaava koodi. MDN merkitsee sen käytöstä poistetuksi turvallisuushuolten vuoksi.
306 (Unused) Ei käytössä, mutta numero on varattu.
307 Temporary Redirect Tilapäinen uudelleenohjaus, jossa HTTP-metodi ei saa muuttua.
308 Permanent Redirect Pysyvä uudelleenohjaus, jossa HTTP-metodi ei saa muuttua.
400 Bad Request Palvelin ei voi tai halua käsitellä pyyntöä siinä havaitun asiakasvirheen vuoksi, esimerkiksi virheellisen syntaksin takia.
401 Unauthorized Asiakkaan täytyy tunnistautua saadakseen pyydetyn vastauksen.
402 Payment Required Alun perin digitaalisiin maksuihin tarkoitettu koodi. MDN:n mukaan sille ei ole vakiintunutta standardikäytäntöä.
403 Forbidden Asiakkaalla ei ole oikeutta sisältöön, joten palvelin kieltäytyy antamasta resurssia.
404 Not Found Palvelin ei löydä pyydettyä resurssia. Koodilla voidaan myös peittää resurssin olemassaolo.
405 Method Not Allowed Palvelin tuntee HTTP-metodin, mutta kohderesurssi ei tue sitä.
406 Not Acceptable Sisältöneuvottelussa ei löytynyt asiakkaan ehtoja vastaavaa sisältöä.
407 Proxy Authentication Required Välityspalvelin edellyttää tunnistautumista.
408 Request Timeout Palvelin haluaa sulkea käyttämättömän yhteyden. Osa palvelimista lähettää tämän myös ilman aiempaa asiakkaan pyyntöä.
409 Conflict Pyyntö on ristiriidassa palvelimen nykyisen tilan kanssa.
410 Gone Pyydetty sisältö on poistettu pysyvästi eikä sillä ole jatko-osoitetta.
411 Length Required Palvelin edellyttää Content-Length-otsaketta, joka puuttuu pyynnöstä.
412 Precondition Failed Pyynnön otsakkeissa asetetut ennakkoehdot eivät täyty.
413 Content Too Large Pyynnön runko ylittää palvelimen kokorajan.
414 URI Too Long Pyynnön URI on pidempi kuin palvelin suostuu käsittelemään.
415 Unsupported Media Type Palvelin ei tue lähetetyn datan mediamuotoa.
416 Range Not Satisfiable Range-otsakkeessa pyydettyä resurssin aluetta ei voida toimittaa.
417 Expectation Failed Expect-otsakkeessa ilmaistua odotusta ei voida täyttää.
418 (Unused) IANA merkitsee numeron käyttämättömäksi. MDN esittelee sen nimellä I’m a teapot; sitä ei pidä sekoittaa tavalliseen virheluokitukseen.
421 Misdirected Request Pyyntö päätyi palvelimelle, joka ei pysty tuottamaan siihen vastausta.
422 Unprocessable Content Pyyntö on rakenteeltaan kelvollinen, mutta sen merkityssisällön virheet estävät toteutuksen.
423 Locked WebDAV: pyydetty resurssi on lukittu.
424 Failed Dependency WebDAV: pyyntö epäonnistui aiemman pyynnön epäonnistumisen vuoksi.
425 Too Early Palvelin ei halua ottaa riskiä sellaisen pyynnön käsittelystä, joka voitaisiin toistaa.
426 Upgrade Required Palvelin kieltäytyy nykyisestä protokollasta mutta voi hyväksyä pyynnön protokollan vaihtamisen jälkeen.
428 Precondition Required Alkuperäpalvelin vaatii ehdollisen pyynnön esimerkiksi päällekkäisten päivitysten estämiseksi.
429 Too Many Requests Pyyntöjä on lähetetty liikaa tietyssä ajassa eli pyyntömäärän rajoitus on ylittynyt.
431 Request Header Fields Too Large Pyynnön otsakekentät ovat liian suuria.
451 Unavailable For Legal Reasons Resurssia ei voida toimittaa oikeudellisesta syystä.
500 Internal Server Error Yleinen palvelinvirhe: palvelin kohtasi tilanteen, jota se ei osaa käsitellä.
501 Not Implemented Palvelin ei tue pyynnön metodia eikä pysty käsittelemään sitä.
502 Bad Gateway Yhdyskäytävänä toimiva palvelin sai virheellisen vastauksen toiselta palvelimelta.
503 Service Unavailable Palvelin ei ole tilapäisesti valmis käsittelemään pyyntöä, esimerkiksi huollon tai ylikuormituksen vuoksi.
504 Gateway Timeout Yhdyskäytävänä toimiva palvelin ei saanut toiselta palvelimelta vastausta ajoissa.
505 HTTP Version Not Supported Palvelin ei tue pyynnön HTTP-versiota.
506 Variant Also Negotiates Sisältöneuvottelun määritysvirhe: valittu vaihtoehto osallistuu itse neuvotteluun, mikä synnyttää kehäviittauksen.
507 Insufficient Storage WebDAV: palvelin ei pysty tallentamaan toimenpiteen onnistumiseksi tarvittavaa esitystä.
508 Loop Detected WebDAV: palvelin havaitsi käsittelyssä päättymättömän silmukan.
510 Not Extended IANA merkitsee koodin vanhentuneeksi. Se liittyi pyynnössä ilmoitettuun HTTP-laajennukseen, jota palvelin ei tukenut.
511 Network Authentication Required Asiakkaan on tunnistauduttava saadakseen verkkoyhteyden käyttöönsä.

Erot, jotka kannattaa ymmärtää

200, 201, 202 ja 204: onnistuminen ei aina tarkoita samaa

200 kertoo onnistuneesta pyynnöstä, 201 uuden resurssin luomisesta ja 204 vastauksesta ilman sisältöä. 202 puolestaan kertoo vain hyväksymisestä käsittelyyn: se ei takaa, että työ lopulta onnistuu. Lähde: MDN.

Suunnitteluesimerkki: uuden tietueen onnistuneen luomisen vastaukseksi voi sopia 201. Taustalla myöhemmin käsiteltävän työn vastaanottamiseen voi sopia 202. Jälkimmäisessä tapauksessa suunnittele myös tapa, jolla käyttäjä näkee työn lopputuloksen.

301 ja 308 sekä 302 ja 307: pysyvyys ja metodi

301 ja 308 tarkoittavat pysyvää osoitteenmuutosta, 302 ja 307 tilapäistä. Koodit 307 ja 308 edellyttävät saman HTTP-metodin säilyttämistä: esimerkiksi POST-pyynnön on pysyttävä POST-pyyntönä myös uudessa osoitteessa. 303 ohjaa sen sijaan GET-pyyntöön. Lähde: MDN.

Valintakriteeri: ratkaise ensin, onko muutos pysyvä. Tarkista sen jälkeen, pitääkö alkuperäisen metodin säilyä. Älä valitse uudelleenohjausta pelkän koodin tuttuuden perusteella.

401 ja 403: tunnistautuminen vai käyttöoikeus?

401 tarkoittaa, että asiakkaan pitää tunnistautua. 403 kertoo, ettei asiakkaalla ole oikeutta pyydettyyn sisältöön. Nimi Unauthorized on 401-koodissa hämäävä: MDN kuvaa sen merkitystä nimenomaan tunnistautumisen puutteena. Lähde: MDN.

Vianetsintäehdotus: 401-tilanteessa tarkista kirjautuminen tai API-pyynnön tunnistautumistiedot. 403-tilanteessa tarkista resurssin käyttöoikeudet. Älä oleta, että uusi kirjautuminen yksin ratkaisee 403-vastauksen.

404 ja 410: puuttuva vai pysyvästi poistettu?

404 kertoo, ettei palvelin löydä resurssia. Se ei yksin todista pysyvää poistamista, ja palvelin voi käyttää sitä myös resurssin olemassaolon salaamiseen. 410 ilmaisee pysyvän poistamisen ilman jatko-osoitetta. Lähde: MDN.

Ylläpitäjän valintakriteeri: selvitä, onko osoite väärä, sisältö puuttuu vai sisältö on tarkoituksella poistettu pysyvästi. Jos sisällöllä on uusi pysyvä osoite, arvioi pysyvää uudelleenohjausta poistokoodin sijaan.

500, 502, 503 ja 504: eri palvelinongelmat

500 on yleinen palvelinvirhe eikä nimeä tarkkaa syytä. 502 kertoo virheellisestä vastauksesta palvelinten välillä, kun taas 504 kertoo odotusajan ylittymisestä. 503 kuvaa tilapäistä kyvyttömyyttä käsitellä pyyntöä. MDN suosittelee 503-vastaukseen mahdollisuuksien mukaan Retry-After-otsaketta, joka kertoo arvioidun odotusajan. Lähde: MDN.

Vianetsintäehdotus: aloita 500-tilanteessa sovelluksen ja palvelimen virhelokeista. 502- ja 504-tilanteissa tarkista myös välityspalvelimen ja taustapalvelun välinen yhteys. 503-tilanteessa selvitä, onko käynnissä huolto tai kapasiteettiongelma. Nämä ovat tutkimussuuntia, eivät koodista pääteltäviä varmoja diagnooseja.

Käytännön tarkistuslista virhetilanteeseen

Seuraavat ovat käytännön työvaiheita. Tarkoitus on kerätä havaintoja ennen asetusten muuttamista.

  1. Kirjaa tilanne. Ota talteen osoite, kellonaika, statuskoodi ja toiminto, jonka yhteydessä virhe tuli. Älä liitä tukipyyntöön salasanoja tai tunnistautumistunnuksia.
  2. Tarkista kyseinen pyyntö. Avaa selaimen kehittäjätyökalujen Verkko- tai Network-näkymä ja toista ongelma. Etsi pyyntö, jonka vastausta haluat selvittää; tarkista osoite, metodi, koodi, otsakkeet ja vastaussisältö.
  3. Rajaa ongelma. Kokeile, koskeeko ongelma yhtä osoitetta vai myös palvelun muita sivuja. Tarkista 404-tilanteessa ensin osoitteen kirjoitusasu ja palvelun oma navigaatio.
  4. Etene koodin mukaan. Tarkista 401/403-tilanteessa tunnistautuminen ja oikeudet. API-pyynnön 405-, 413-, 415- tai 422-vastauksessa vertaa metodia, datan kokoa, muotoa ja sisältöä rajapinnan dokumentaatioon.
  5. Vältä jatkuvaa uudelleenyritystä. Jos saat 429- tai 503-vastauksen, tarkista palvelun antama odotusohje ennen uutta yritystä.
  6. Ylläpitäjä: yhdistä havainto lokeihin. Etsi saman ajan ja pyynnön tapahtumat sovelluksen, palvelimen ja mahdollisen välityspalvelimen lokeista. Tee korjaus havaitun syyn perusteella, älä arvatun muistirajan tai tiedosto-oikeuden perusteella.
  7. Varmista korjaus. Toista alkuperäinen toiminto ja tarkista sekä statuskoodi että vastauksen sisältö. Tarkista uudelleenohjauksessa myös kohdeosoite ja tarvittaessa metodin säilyminen.

Koodien tulkinnan pohjana ovat MDN:n määritelmät: esimerkiksi 429 kertoo pyyntömäärän rajoituksesta, 415 tukemattomasta mediamuodosta ja 422 sisällön merkitykseen liittyvästä virheestä. Koodi ei kuitenkaan korvaa palvelun omaa dokumentaatiota tai lokien tutkimista.

Entä epäviralliset ja käytöstä poistuneet koodit?

Kaikki ohjelmistojen käyttämät numerot eivät ole IANA-rekisteriin varattuja HTTP-statuskoodeja. Esimerkiksi 499 on Microsoftin dokumentaation mukaan Nginxin alun perin määrittelemä epävirallinen koodi, jota käytetään lokeissa asiakkaan katkaistua yhteyden. IANA-rekisterissä 499 kuuluu varaamattomaan alueeseen.

Rekisterissä esiintyminen ei myöskään tarkoita, että koodi olisi hyvä valinta uuteen toteutukseen. Esimerkiksi 306 ja 418 on merkitty käyttämättömiksi ja 510 vanhentuneeksi. Koodi 104 on tarkistushetkellä väliaikaisesti rekisteröity. Tarkista siksi erikoiskoodin ajantasainen tila IANA-rekisteristä ennen käyttöönottoa.

Lähteet ja tarkemmat määritelmät