Căutați orice cod de stare HTTP: ce înseamnă, când îl trimit serverele și ce specificație îl definește. Căutați după număr sau cuvânt cheie, filtrați după clasă și creați un link direct către un cod.
Serverul a primit anteturile cererii, iar clientul poate trimite corpul. Apare atunci când clientul trimite „Expect: 100-continue” înainte de a încărca un corp mare.
Este trimis înaintea răspunsului final, astfel încât browserul să poată începe preîncărcarea resurselor listate în anteturile Link. Este folosit de CDN-uri și servere pentru a accelera încărcarea paginilor.
Cererea a fost acceptată pentru procesare, dar nu este finalizată. Este folosit de API-urile care pun lucrări în coadă, cum ar fi exporturile sau procesele batch.
Cererea a reușit și nu există conținut de returnat. Este obișnuit pentru cererile DELETE și pentru salvarea datelor când clientul nu are nevoie de un corp de răspuns.
Serverul returnează doar intervalul de octeți solicitat de client. Apare atunci când se transmit fluxuri video, se reiau descărcările sau clientul trimite un antet Range.
Resursa s-a mutat permanent la adresa URL din antetul Location. Browserele și motoarele de căutare își actualizează linkurile; unii clienți schimbă POST în GET atunci când îl urmează.
Resursa se află temporar la un alt URL indicat în antetul Location. Apare frecvent după autentificare și pentru redirecționări temporare; browserele o urmează de obicei cu GET.
Clientul ar trebui să obțină rezultatul de la un alt URL cu GET. Se folosește după un POST de formular pentru a redirecționa către o pagină de confirmare (modelul Post/Redirect/Get).
Copia din cache este încă validă, deci serverul nu trimite niciun corp. Apare când un browser revalidează un fișier din cache cu If-None-Match sau If-Modified-Since.
Resursa se află temporar la un alt URL, iar clientul trebuie să repete cererea cu aceeași metodă și același corp. Este folosit și de browsere pentru redirecționările interne HSTS către HTTPS.
Resursa s-a mutat permanent, iar clientul trebuie să folosească aceeași metodă și același corp la noul URL. Echivalentul permanent al codului 307, sigur pentru redirecționarea cererilor POST.
Cererea nu are date de autentificare valide. În ciuda numelui, înseamnă „neautentificat”; serverul trimite un antet WWW-Authenticate care descrie cum să te autentifici.
Rezervat pentru utilizare viitoare în specificația HTTP. Unele API-uri și servicii de plată îl folosesc atunci când este necesară o plată sau un abonament.
Serverul a înțeles cererea, dar o refuză, iar autentificarea din nou nu va ajuta. Apare când lipsesc permisiunile, listarea unui director este dezactivată sau un firewall blochează clientul.
Resursa există, dar nu acceptă metoda HTTP folosită, de exemplu POST către un URL doar pentru citire. Răspunsul listează metodele permise în antetul Allow.
O condiție din anteturile cererii, cum ar fi If-Match, nu a fost îndeplinită. Se folosește pentru a preveni suprascrierea unei resurse care s-a modificat de când clientul a citit-o ultima dată.
URL-ul este mai lung decât poate procesa serverul. De obicei este cauzat de un formular care trimite prea multe date prin GET sau de o buclă de redirecționare care adaugă parametri în continuu.
O glumă de 1 aprilie din protocolul Hyper Text Coffee Pot Control Protocol din 1998: un ceainic care refuză să facă cafea. HTTP rezervă codul ca neutilizat, dar unele servere îl returnează ca un easter egg sau pentru a respinge roboții nedoriți.
Cererea a ajuns la un server care nu poate produce un răspuns pentru această gazdă, de exemplu când o conexiune HTTP/2 este refolosită pentru un alt domeniu.
Cererea este bine formată, dar conținutul său este invalid, cum ar fi un formular cu reguli de validare nereușite. Este folosit pe scară largă de API-uri pentru erori de validare.
Clientul a trimis prea multe cereri într-un anumit interval. API-urile îl folosesc pentru limitarea ratei și includ adesea un antet Retry-After care indică momentul pentru o nouă încercare.
Antetele cererii sunt prea mari, adesea din cauza prea multor cookie-uri sau a unor cookie-uri supradimensionate. Ștergerea cookie-urilor site-ului rezolvă de obicei problema.
Nu este un cod standard. nginx îl folosește intern pentru a închide conexiunea fără a trimite niciun răspuns, adesea pentru a respinge trafic nedorit; clienții nu îl primesc niciodată efectiv.
Resursa este indisponibilă din motive legale, precum o hotărâre judecătorească sau cenzura guvernamentală. Numărul face referire la romanul Fahrenheit 451.
Nu este un cod standard. nginx îl înregistrează când clientul a închis conexiunea înainte ca serverul să răspundă, de exemplu un utilizator care anulează o pagină lentă sau un timeout din partea clientului.
Serverul a întâmpinat o eroare neașteptată și nu a putut finaliza cererea. O eroare generică provenită dintr-un bug, o blocare sau o configurare greșită; jurnalele serverului conțin detaliile.
Un gateway sau un proxy a primit un răspuns nevalid de la serverul din amonte. Frecvent când aplicația din spatele nginx sau al unui load balancer s-a blocat sau repornește.
Serverul nu poate procesa temporar cererea deoarece este supraîncărcat sau este oprit pentru mentenanță. Antetul Retry-After poate indica când să reîncercați.
Un gateway sau un proxy nu a primit un răspuns de la serverul din amonte la timp. Apare când o cerere către backend este prea lentă, cum ar fi o interogare lungă de bază de date.
Clientul trebuie să se autentifice pentru a obține acces la rețea. Este trimis de portalurile captive din rețelele Wi-Fi de la hotel, aeroport sau cafenea înainte de autentificare.
Nu este un cod standard. Cloudflare îl returnează când serverul de origine a refuzat conexiunea, de obicei pentru că serverul web este oprit sau blochează adresele IP ale Cloudflare.
Nu este un cod standard. Cloudflare îl returnează când s-a conectat la serverul de origine, dar nu a primit un răspuns HTTP în timpul limită (100 de secunde în mod implicit).
Nu este un cod standard. Cloudflare îl returnează când certificatul SSL al serverului de origine este invalid și modul SSL Full (strict) este activat.
Definit în Cloudflare
Cum se folosește
Tastați un număr de cod (de exemplu 404 sau doar 5 pentru toate erorile de server) sau un cuvânt cheie precum „redirect” sau „timeout”.
Restrângeți lista cu filtrul de clasă: informațional, succes, redirecționare, eroare de client sau eroare de server.
Folosiți „Copy link” la orice cod pentru a partaja un link direct către acesta, de exemplu într-un raport de eroare.
Cum funcționează
Fiecare răspuns HTTP începe cu un cod de stare din trei cifre. Prima cifră stabilește clasa: 1xx răspunsuri informaționale, 2xx succes, 3xx redirecționare, 4xx erori cauzate de cerere și 5xx erori pe partea de server. Clienții care nu recunosc un anumit cod îl tratează ca pe codul x00 al clasei sale, astfel încât un cod 4xx necunoscut este tratat ca 400.
Codurile de bază sunt definite în RFC 9110 (HTTP Semantics, 2022), care a înlocuit vechiul RFC 7231. Altele provin din extensii: WebDAV (RFC 4918), RFC 6585 pentru 428, 429, 431 și 511, RFC 7725 pentru 451 și RFC 8470 pentru 425. RFC 9110 a redenumit și două coduri: 413 este acum „Content Too Large”, iar 422 „Unprocessable Content”; le puteți întâlni în continuare sub vechile denumiri „Payload Too Large” și „Unprocessable Entity”.
Unele coduri pe care le întâlniți în jurnale nu sunt deloc standard. nginx folosește intern 444 și 494–499 (499 indică un client care a renunțat să mai aștepte), iar Cloudflare returnează 520–526 atunci când nu poate obține un răspuns corect de la serverul de origine. Acestea sunt marcate „Non-standard” în listă. Expresiile de motiv (cum ar fi „Not Found”) sunt afișate în engleză așa cum sunt scrise în specificații; HTTP/2 și HTTP/3 trimit doar numărul.
Exemple
301 sau 308 la mutarea unui site
Ambele sunt permanente. Folosiți 301 pentru mutări obișnuite de pagini; folosiți 308 atunci când clienții trebuie să repete cererile POST sau PUT către noul URL, deoarece unii clienți transformă POST în GET după un 301.
401 versus 403
Un API returnează 401 atunci când nu este trimis niciun token sau tokenul trimis este expirat, astfel încât clientul ar trebui să se autentifice. Returnează 403 atunci când tokenul este valid, dar utilizatorul nu are permisiunea necesară, deci o nouă autentificare nu va ajuta.
Diagnosticarea unui 502 în spatele nginx
Un 502 Bad Gateway de la nginx înseamnă că aplicația din spatele lui nu a răspuns corespunzător. Verificați dacă procesul aplicației rulează și ce a înregistrat în jurnal; 504 înseamnă, în schimb, că a răspuns prea lent.
Întrebări frecvente
Care este diferența dintre 404 și 410?
404 înseamnă că serverul nu poate găsi resursa și nu spune nimic despre viitor. 410 indică faptul că resursa a fost eliminată în mod deliberat și nu va mai reveni, ceea ce ajută motoarele de căutare să elimine mai repede URL-ul.
Ar trebui ca o eroare de validare să returneze 400 sau 422?
Ambele sunt folosite. 400 se potrivește cererilor pe care serverul nu le poate parsa, cum ar fi JSON invalid. 422 se potrivește cererilor care se parsează corect, dar conțin valori nevalide, cum ar fi un câmp de email fără @.
Este 418 „I’m a teapot” un cod de stare real?
Provine dintr-un RFC de 1 aprilie din 1998. RFC 9110 rezervă codul 418 ca nefolosit pentru a nu fi atribuit altui scop, iar câteva servere îl returnează ca glumă, dar nu are o semnificație standard.
De unde provine 499?
499 este specific nginx. Apare în logurile nginx atunci când clientul închide conexiunea înainte ca serverul să trimită un răspuns. Clientul nu primește niciodată un 499; de obicei indică răspunsuri lente sau expirări de timp pe partea clientului.
Motoarele de căutare tratează 302 la fel ca 301?
Un 302 semnalează o mutare temporară, așa că motoarele de căutare păstrează de obicei URL-ul original indexat inițial. Dacă un 302 rămâne activ mult timp, Google îl poate trata ca pe o redirecționare permanentă. Folosiți 301 sau 308 pentru mutări permanente.
Confidențialitate
Lista face parte din pagină. Căutarea și filtrarea se realizează în browserul dvs.; termenii căutați nu sunt trimiși nicăieri și nu sunt incluși în statistici.