Hoppa till innehåll

HTTP-statuskoder

Ett HTTP-svar börjar med en tresiffrig kod och en kort orsaksuttryck. Den första siffran är hela sammanfattningen: 1xx är preliminär, 2xx lyckades, 3xx pekar någon annanstans, 4xx skyller på begäran, 5xx skyller på servern. Om du bara kommer ihåg det kan du läsa en logg du aldrig har sett förut.

Orsaksfraserna här är de från RFC, på engelska, för det är vad som reser på ledningen — en server skickar "Not Found", inte en översättning av den, och en fras du söker efter i en logg måste matcha de bytes som faktiskt skickades.

De distinktioner som orsakar verklig problem är inuti klasserna snarare än mellan dem: 401 kontra 403, 301 kontra 308, och 502 kontra 503 svarar var och en på en annan fråga om vad som ska göras härnäst, och var och en används rutinmässigt för den andra.

1xx — Informativ

3

Preliminär: svaret är inte slutgiltigt och ett annat följer.

KodOrsaksfrasVad det betyder
100ContinueHuvuden mottagna, fortsätt skicka kroppen.
101Switching ProtocolsVäxlande protokoll — WebSocket-handslaget.
103Early HintsTidiga tips: förladdning av dessa resurser medan det riktiga svaret förbereds.

2xx — Framgång

5

Begäran mottogs, förstods och accepterades.

KodOrsaksfrasVad det betyder
200OKFramgång, med en kropp.
201CreatedSkapad.Bör bära ett Location-huvud som pekar på den nya resursen.
202AcceptedAccepterad för bearbetning, vilket inte har hänt ännu.
204No ContentFramgång, och medvetet ingen kropp.Det rätta svaret på en DELETE, eller på en sparning som inte har något att returnera.
206Partial ContentPartiellt innehål — svaret på en Range-begäran. Resumable downloads.

3xx — Omdirigering

6

Resursen är någon annanstans, eller din cachat kopia är fortfarande bra.

KodOrsaksfrasVad det betyder
301Moved PermanentlyFlyttad permanent. Uppdatera dina länkar; cacheminnen kan förvara detta för alltid.
302FoundFunnet — en tillfällig omdirigering.Allmänt implementerat som växling av metoden till GET, som 307 åtgärdar.
303See OtherSe övrigt: hämta resultatet med GET. Omdirigeringen efter en formulär POST.
304Not ModifiedInte ändrad — din cachade kopia är aktuell. Skickas utan kropp.
307Temporary RedirectTillfällig omdirigering, metod och kropp bevarad.
308Permanent RedirectPermanent omdirigering, metod och kropp bevarad.

4xx — Klientfel

14

Begäran är problemet. Om du upprepar det oförändrat kommer det att misslyckas igen.

KodOrsaksfrasVad det betyder
400Bad RequestServern kunde inte tolka begäran alls.
401UnauthorizedInte autentiserad — servern vet inte vem du är.Namngiven Unauthorized, men det betyder oautentiserad. Bör innehålla WWW-Authenticate.
403ForbiddenAutentiserad och fortfarande inte tillåten. Bättre uppgifter hjälper inte.
404Not FoundIngen sådan resurs, och servern säger inte om det någonsin fanns en.
405Method Not AllowedFel metod för denna URL.Måste lista de som fungerar i ett Allow-huvud.
406Not AcceptableIngenting tillgängligt i ett format ditt Accept-huvud tar.
409ConflictStrider mot det nuvarande tillståndet — en redigering mot en stale version.
410GoneBorta: den existerade och togs bort medvetet. Starkare än 404.
413Content Too LargeKroppen är större än servern accepterar.
415Unsupported Media TypeServern hanterar inte denna Content-Type.
418I'm a teapotJag är en tekanna. Ett 1998 April Fools-skämt, permanent reserverat.
422Unprocessable ContentTolkat korrekt, innehål ogiltigt — ett saknat fält, ett dåligt värde.
429Too Many RequestsRatebegränsad.Sök efter Retry-After innan du försöker igen, och backa av exponentiellt.
451Unavailable For Legal ReasonsBlockerad av juridiska skäl. Numret är en anspelning på Fahrenheit 451.

5xx — Serverfel

6

Begäran kan vara bra. Dessa är värda att försöka igen.

KodOrsaksfrasVad det betyder
500Internal Server ErrorEtt ohanterat fel på servern. Ingenting att åtgärda på din sida.
501Not ImplementedServern implementerar inte denna metod alls.
502Bad GatewayEn proxy nådde uppströmservern och fick något oanvändbar tillbaka.
503Service UnavailableMedvetet inte serving — överbelastad eller i underhåll.Statusen som bör bära Retry-After.
504Gateway TimeoutEn proxy gav upp på att vänta på uppströmservern.
505HTTP Version Not SupportedHTTP-versionen i begäran stöds inte.

FAQ

Vad är skillnaden mellan 401 och 403?
401 Unauthorized betyder att begäran inte autentiserades — servern vet inte vem du är, och en korrekt 401 innehåller ett WWW-Authenticate-huvud som talar om för dig hur du bevisar det. 403 Forbidden betyder att den vet exakt vem du är och du får fortfarande inte detta. Att göra om en 403 med bättre uppgifter för samma identitet kommer inte att hjälpa.
Ska jag använda 301 eller 308 för en omdirigering?
308 om metoden spelar roll. Historiskt implementerades 301 och 302 allmänt som "omdirigera och byt till GET", vilket tyst förvandlar en POST till en GET. 307 och 308 introducerades för att lova att metoden och brödtexten är bevarade. För en permanent förflyttning av en sida som bara någonsin hämtas är 301 fortfarande det mest förståelserika valet.
Vad betyder 422 som 400 inte?
400 Bad Request betyder att servern inte kunde förstå begäran alls — felaktig JSON, ett bruten huvud. 422 Unprocessable Content betyder att det analyserades fint och innehållet är ändå fel: en väl formad brödtext med ett obligatoriskt fält som saknas eller ett datum i det förflutna. Splittringen är användbar just för att klientens fix är olika i varje fall.
Är 418 en riktigt statuskod?
Den är verklig genom att den är registrerad och varje HTTP-bibliotek känner till den, och ett skämt genom att den kommer från 1998 April Fools' Hyper Text Coffee Pot Control Protocol. Försök att återkräva numret för praktisk användning avslogs, så det är permanent reserverat för tekannor.
Varför är 503 annorlunda från 502?
502 Bad Gateway betyder att en proxy nådde uppströmservern och fick något oanvändbar tillbaka. 503 Service Unavailable betyder att servern själv medvetet inte serving just nu — överbelastad eller i underhåll — och det är den som bör bära en Retry-After-huvud, för det är den som förväntas återhämta sig.