Ieškoti

Populiariausios HTML klaidos ir ką jos reiškia

0 komentarų
Paskelbta: 2024-11-28 | Atnaujinta: 2024-12-03 | Parašė: Agnė | Užtruksite: 12 min.

HTML klaidos arba HTTP statuso kodai paprastai susiję su serverio, tinklo problemomis arba problemomis iš lankytojo pusės. Lankytojai su šiomis klaidomis gali susidurti tinklalapiuose ir jos trukdys tinkamai užkrauti svetainę, kitais atvejais – pateikiamo kodo gali net nepastebėti.

HTTP statuso kodai yra skirstomi į 5 kategorijas, remiantis pateiktu atsakymu lankytojo naršyklei:

1XX informational – informacinio pobūdžio, kurie nurodo, kad serveris gavo naršyklės išsiųstą HTTP užklausą ir tęs procesą. Tai laikinas atsakymas, todėl svetainės lankytojas nesusidurs su šiuo būsenos kodu, nes tai nėra galutinis atsakymas.

2XX success – sėkmingai apdorotos užklausos – ši kategorija nurodo, kad užklausa buvo gauta ir sėkmingai apdorota iš serverio pusės.

3XX redirection – nukreipimas – ši kategorija nurodo, kad serveris užklausą gavo, tačiau norimas pasiekti turinys buvo perkeltas į kitą vietą, todėl lankytojas bus nukreiptas.

4XX client error – klaida kliento pusėje (pvz., „Chrome“, „Firefox“ ir kt.) – kategorija apima klaidos pranešimus, kai serveris negali įvykdyti užklausos dėl klaidos, kylančios kliento pusėje, pavyzdžiui, svetainės puslapis įrašomas naršyklėje su klaida.

5XX server error – serverio klaidos – kategorija apima klaidas, kuomet serveris negali apdoroti gautos užklausos.

Iš ko susideda HTTP užklausa?

HTTP užklausos dalys perduoda informaciją tarp kliento (pvz., naršyklės) ir serverio. Sudedamosios dalys yra šios:

1. Užklausos linija (Request Line), kuri susideda iš:

HTTP metodo.

HTTP metodas nurodo kokio tipo veiksmą klientas nori atlikti, pavyzdžiui, GET, POST, DELETE ar kt.

Užklausos tikslas

Tai gali būti kelias iki resurso, URL adresas, protokolas.

HTTP versija

Naudojama protokolo versija (pvz., HTTP/1.1 arba HTTP/2).

2. Antraštės (Headers)

3. Kūnas (Body)

Ne visi atsakymai jį turi: atsakymai su statuso kodu, kuris pakankamai atsako į užklausą be turinio įtraukimo (pvz., 201 Created ar 204 No Content), paprastai jo neturi.

Atsakymų body gali būti suskirstyti į tris pagrindines kategorijas:

  1. Vieno resurso kūnai, sudaryti iš vieno failo, kurio ilgis yra žinomas, apibrėžiami dviem antraštėmis: Content-Type ir Content-Length.
  2. Vieno resurso kūnai, sudaryti iš vieno failo, kurio ilgis nežinomas, koduojami dalimis (chunks), su antrašte Transfer-Encoding nustatyta kaip chunked.
  3. Daugialypiai kūnai, sudaryti iš kelių dalių (multipart body), kur kiekviena dalis pateikia skirtingą informacijos sekciją. Toks atvejis rečiau sutinkamas.


Keletas HTTP statuso pavydžių

HTTP kodas
Pavadinimas

Paaiškinimas
1XX — Informacinis
100
Tęsiama
(Continue)
Serveris gavo užklausos antraštes, todėl klientas turėtų tęsti ir siųsti užklausos turinį (kai užklausai reikia turinio, pavyzdžiui, POST užklausa). Siųsti didelį užklausos turinį serveriui, kai antraštės jau buvo atmestos dėl netinkamumo, būtų neefektyvu. Norėdamas, kad serveris patikrintų užklausos antraštes, klientas turi pridėti Expect: 100-continue antraštę pačioje pradinėje užklausoje ir gauti atsakymą su 100 Continue statuso kodu prieš siunčiant tolimesnį turinį.
101
Protokolų perjungimas (Switching Protocols)
Užklausoje prašoma perjungti protokolus ir serveris sutinka tai padaryti.

102

Apdorojama
(Processing)
Šis kodas reiškia, kad serveris gavo visą užklausą ir ją apdoroja. Šiuo metu nebus jokio atsakymo, nes jis jos dar neužbaigė.
Šią būseną serveris siųs tik tada, kai užklausos užbaigimas užtruks gerokai ilgiau.

103

Early Hints
Šis statuso kodas naudojamas kartu su Link antrašte, kad naršyklė galėtų iš anksto įkelti resursus, kol serveris ruošia pilną atsakymą.
2xx success – sėkmingas

200

Ok
Standartinis atsakymas į sėkmingas HTTP užklausas. Tikrasis atsakymas priklausys nuo naudoto užklausos metodo. Naudojant GET užklausą, atsakymas turės objektą, atitinkantį prašomą resursą. Naudojant POST užklausą, atsakymas turės objektą, aprašantį arba turintį atlikto veiksmo rezultatą.

201

Sukurta
(Created)
Šis būsenos kodas reiškia, kad serveris įvykdė užklausą ir sukūrė vieną ar daugiau naujų išteklių. Tai tipiškas atsakymas, siunčiamas po POST arba PUT metodo.

202

Priimta
(Accepted)
Šis kodas rodo, kad serveris priėmė užklausą apdorojimui, bet dar nebaigė.
202 yra atsakymas, kuris skirtas, kai užklausą tvarko kitas procesas arba serveris.

203

Netiksli informacija
(Non-authoritative Information)
Šis būsenos kodas reiškia, kad užklausa buvo sėkminga, tačiau nurodo, kad serveris informaciją surinko iš vietinės arba trečiosios šalies kopijos, o ne iš pirminio šaltinio.

204

Nėra turinio
(No content)
Šis būsenos kodas rodo, kad serveris įvykdė užklausą. Tačiau atsakyme nėra jokio papildomo turinio, kurį reikėtų siųsti.

205

Iš naujo nustatyti turinį
(Reset content)
Šis būsenos kodas reiškia, kad serveris įvykdė užklausą, o vartotojas turėtų atstatyti dokumentą/išteklių į pradinę būseną.

206

Dalinis turinys
(Partial Content)
Serveris siunčia šį HTTP atsakymo kodą reaguodamas į Range antraštę, kurią klientas pateikė, kai prašo tik dalies išteklių
3xx – peradresavimai

300

Keli pasirinkimai
(Multiple Choices)
Šis būsenos kodas reiškia, kad užklausoje yra keli galimi atsakymai ir turėtų būti pasirinktas vieną iš jų.

301

Pastovus nukreipimas
(Moved Permanently)
Šis HTTP būsenos kodas reiškia, kad prašomas išteklius perkeltas į naują nuolatinį URL adresą.

302
Laikinas nukreipimas
(Found (Previously: Moved Temporarily))
Svetainė arba puslapis buvo laikinai perkeltas į kitą URL adresą.
303
„žiūrėti kitur”
(See Other)
Serveris siunčia šį atsakymo kodą, kad nukreiptų klientą į kitą šaltinį naudodamas GET metodą – serveris nukreipia lankytoją ne į prašomus išteklius, o į kitą puslapį.

304
Nepakeista
(Not Modified)
Prašomas išteklius nebuvo pakeistas nuo ankstesnio perdavimo. Tokiu atveju ištekliaus pakartotinai siųsti nereikia, nes klientas vis dar turi anksčiau atsisiųstą kopiją.

305

Naudoti tarpinį serverį
(Use Proxy)
Kad būtų pasiektas prašomas išteklius, turi būti naudojamas proxy serveris, kuris pateiktas atsakyme.
Svarbu atkreipti dėmesį, kad šis HTTP atsakymas nebenaudojamas. Jis buvo įtrauktas į HTTP/1.1 specifikaciją, tačiau dėl saugumo problemų ir painumo jis praktiškai nebenaudojamas ir buvo pašalintas iš vėlesnių standartų.

307
Laikinas peradresavimas (Temporary Redirect)Norimas pasiekti išteklius lankytojas yra laikinai nukreiptas į kitą URL adresą.

308
Nuolatinis peradresavimas (Permanent Redirect)Šis atsakymo kodas reiškia, kad prašomas išteklius visam laikui perkeltas į naują URL, įtrauktą į HTTP antraštę.
4xx – client error – klaida kliento (lankytojo) pusėje
400
Bloga užklausa
(Bad request)
Šis būsenos kodas reiškia, kad serveris negalėjo įvykdyti užklausos dėl kliento klaidos, tokios kaip netinkama sintaksė – klientas siunčia užklausą su nepilnais duomenimis, prastai sudarytais duomenimis arba neteisingais duomenimis.

401

Neautorizuotas
(Unauthorized)
Šis HTTP atsakymas reiškia, kad serveris neapdorojo užklausos, nes joje nėra galiojančių vartotojo prisijungimo duomenų.

403

Draudžiamas
(Forbidden)
Šis HTTP atsakymas reiškia, kad serveris suprato užklausą, bet atsisakė ją įvykdyti. 403 klaida atsiranda, nes klientas neturi pakankamai teisių pasiekti tam tikrą turinį. Jei į užklausą įtraukti prisijungimo duomenys, tokiu atveju jų gali neužtekti.

404

Nerasta
(Not Found)
Klaidos kodas nurodo, kas puslapis arba bandomas užkrauti resursas nerastas serveryje. Klaida susijusi su tinklapio arba kai kurių jo puslapių, kuriuos bandoma pasiekti, pašalinimu, pervadinimu arba tiesiog neteisingai įvestu adresu į naršyklę.

405
Neleidžiamas metodas
(Method Not Allowed)
Serveris atpažįsta užklausos metodą, tačiau jis nėra palaikomas.

406

Nepriimtina
(Not Acceptable)
Šį negaliojantį atsakymą serveris siunčia, kai pagal kartu su užklausa gautas „ Accept antraštes neranda jokio turinio, atitinkančio naudotojo nurodytus kriterijus.

407

Reikalinga tarpinio serverio autentifikacija
(Proxy Authentication Required)
Serveris rodo šį kodą, kai naudojamas tarpinis serveris. Klientas turi pateikti galiojančius prisijungimus, kad galėtų pasiekti prašomą šaltinį. Iš esmės jis panašus į 401 Unauthorized.

408

Baigėsi užklausos laikas (Request Timeout)
Šis būsenos kodas reiškia, kad serveris negavo visos užklausos per numatytą laikotarpį.

409

Konfliktas
(Conflict)
Užklausa, kuri buvo išsiųsta, prieštarauja vidinėms serverio operacijoms, todėl serveris negali jos įvykdyti. Dažniausiai toks kodas pateikiamas atsakant į PUT tipo užklausas.

410

Išnykęs
(Gone)
Šis būsenos kodas reiškia, kad išteklius ar norimas pasiekti puslapis nepasiekiamas visam laikui ir nenustatytas joks adresas, į kurį būtų nukreipiama. Kai puslapyje rodomas šis pranešimas, paieškos sistemos jį visiškai pašalins iš indeksavimo. Šiuo atsakymu siekiama pranešti lankytojui, kad išteklius tyčia nepasiekiamas ir svetainės savininkas nori ištrinti ir bet kokią nuorodą, vedančią į jį.

411

Reikalingas Ilgis
(Length Required)
Šis atsakymo kodas reiškia, kad serveris atmetė užklausą, nes jai reikalinga nurodyti Content-Length antraštė.

412

Išankstinė sąlyga nepavyko (Precondition Failed)
Šis kodas reiškia, kad serveris nesugebėjo patenkinti vienos ar kelių išankstinių sąlygų, nurodytų užklausos antraštėse.

413

Per daug duomenų
(Payload Too Large)
Šis kodas nurodo, kad užklausa yra per didelė, ir serveris atsisako ją apdoroti.

415
Nepalaikomas media tipas (Unsupported Media Type)Serveris atmeta užklausą, nes resursas naudoja nepalaikomą medijos formatą.
421Netinkama užklausa (Misdirected Request)Šis kodas rodo, kad užklausa buvo išsiųsta serveriui, kuris negali apdoroti pateikto URI derinio.

422
Nepavyko apdoroti (Unprocessable Entity)Šis atsakymas reiškia, kad klientas pateikė teisingą užklausą, bet serveris negali jos apdoroti dėl semantinių klaidų.
423Užrakinta
(Locked)
Resursas, skirtas užklausos metodui, yra užrakintas.

426
Reikalingas atnaujinimas (Upgrade Required)Serveris atsisako atlikti užklausą, nebent klientas pereis prie kito protokolo.

429
Per daug užklausų
(Too Many Requests)
Šis kodas rodo, kad klientas išsiuntė per daug užklausų per trumpą laiką.
431Per didelės antraštės
(Request Header Fields Too Large)
Užklausos antraštės yra per didelės, ir serveris atsisako jas apdoroti.
5XX server error – serverio klaidos
500
Vidinė serverio klaida
(Internal Server Error)
Klaida pateikiama, kai WEB serveris negali atsakyti į gautą užklausą. Tokios klaidos priežastys gali būti netinkama serverio konfigūracija, trūkumai programinėje įrangoje ar klaidingas kodas. Tokia klaida kyla ne iš lankytojo naršyklės pusės.

501

Neįgyvendinta
(Not Implemented)
Atsakymas nurodo, kad serveris negali užbaigti užklausos, nes nepalaiko funkcijų, reikalingų užklausos užbaigimui.

502

Blogas tarpinio serverio atsakas (Bad Gateway)
Šis būsenos kodas nurodomas, kai tarpinis serveris (gateway) arba proxy serveris gauna netinkamą atsaką, bandydamas įvykdyti užklausą.
503
Paslauga nepasiekiama
(Service Unavailable)
Šis būsenos kodas reiškia, kad serveris negalėjo apdoroti užklausos dėl laikino apkrovos padidėjimo arba planinės priežiūros.
Kai kuriais atvejais 503 klaida gali būti pateikiama su antrašte Retry-After, kuri nurodo, kiek laiko klientas turėtų palaukti prieš pakartotinai pateikdamas užklausą.
505
Nepalaikoma HTTP versija(HTTP Version Not Supported)
Serveris pateikia šį būsenos kodą, kai jis nepalaiko HTTP versijos, naudotos užklausoje.
507
Nepakankama saugyklos vieta (Insufficient Storage)
Šis atsakymo kodas nurodo, kad operacija negali būti atlikta su resursu, nes serveris negali išsaugoti reikalingos informacijos, kad užbaigtų užklausą.

508

Aptikta “Kilpa”
(Loop Detected)
Serveris siunčia šį atsakymą, kai jis nutraukia operaciją dėl begalinės kilpos, kuri atsiranda naudojant Depth: infinity. Tai reiškia, kad visas procesas nepavyko.
511
Reikalinga tinklo autentifikacija (Network Authentication Required)
Šis atsakymas nurodo, kad klientas turi būti autentifikuotas, kad galėtų pasiekti tinklą. Atsakyme dažniausiai pateikiama ir nuoroda, kurioje naudotojas gali pateikti savo prisijungimo duomenis.





Dažniausiai sutinkami HTTP statusai


HTTP statusų yra nemažai, tačiau tikrai ne visi jie sutinkami nuolat. Kai kurie lankytojui netgi nėra matomi. Bene dažniausiai sutinkami statusai būtų:

1. 404 Not Found
Šis kodas rodo, kad prašomas puslapis ar resursas nerastas serveryje. Tai dažniausiai reiškia, kad tinklalapis buvo pašalintas, pervadintas arba neteisingai įvesta jo nuoroda. Nuorodos, vedančios į 404 klaidos puslapį, dažnai vadinamos neveikiančiomis nuorodomis (angl. broken link arba dead links).
Šis HTTP kodas nurodo, kad resursas neegzistuoja, tačiau nepateikia informacijos, ar tai laikina, ar tai yra nuolatinė situacija. 404 klaidos svetainėje gali pabloginti naudotojo patirtį (angl. user experience), todėl svarbu sumažinti neveikiančių nuorodų (vidinių ir išorinių) skaičių.
Dažniausios 404 atsako priežastys:
* Klaidingai įvestos URL nuorodos.
* Puslapiai, kurie buvo perkelti ar ištrinti be tinkamo peradresavimo.


Rekomenduotina periodiškai patikrinti savo svetainę dėl neveikiančių nuorodų, o puslapiams, kurie yra perkelti į kitą vietą, naudoti peradresavimus (301,302).


2. 500 Internal Server Error
Vidinė serverio klaida kyla ne iš kliento pusės (priešingai nei 404 HTTP atsakymas), o iš serverio pusės. Priežasčių gali būti įvairių: neteisinga serverio konfigūracija, atminties trūkumas, programinio kodo klaidos, neteisingos failų teisės ir kt.

Sprendžiant šią klaidą padėti gali išrašų (logs) peržiūra, programinio kodo ir failų teisių patikrinimas. Kaip peržiūrėti serverio išrašus galite matyti mūsų pagalbos puslapyje.


3. 503 Service Unavailable
HTTP 503 Service Unavailable kodas rodo, kad serveris šiuo metu negali apdoroti užklausos.
Klaida gali būti sutinkama dėl techninės priežiūros, pavyzdžiui, serveryje atliekamų programinės įrangos darbų – tokių atvejų metu serverio administratoriai gali nukreipti visą srautą į 503 klaidos puslapį. Toks statusas taip pat gali būti grąžinamas ir dėl serverio apkrovos, pavyzdžiui, išnaudojami RAM resursai, išaugusi CPU apkrova.
HTTP 503 atsakymai nurodo laikiną problemą, todėl jų negalima kešuoti. Priešingu atveju, klientai po problemos išsprendimo gali matyti pasenusius klaidos puslapius.

4. 508 Loop Detected
HTTP 508 Loop Detected kodas rodo, kad visa operacija nepavyko dėl to, jog buvo aptikta begalinė kilpa, apdorojant užklausą su nustatyta Depth: infinity reikšme.
Tai reiškia, kad serveris aptinka begalinę kilpą (ciklinę nuorodą) atliekant užklausą. Tai gali atsitikti, pavyzdžiui, kai užklausos apdorojimo metu tam tikros nuorodos nuolat nukreipia į save, sudarydamos nesibaigiantį ciklą.


5. 403 Forbidden
HTTP 403 Forbidden kodas rodo, kad serveris suprato užklausą, tačiau atsisakė ją apdoroti. Šis statusas yra panašus į 401 Unauthorized, tačiau 403 Forbidden atsakymo atveju autentifikacija arba naujas prisijungimas nepadarys jokios įtakos. HTTP atsakymas atsiranda, kai vartotojas neturi pakankamai teisių pasiekti išteklius arba atlikti tam tikrą veiksmą.

HTTP statuso patikrinimas

Tiek 1xx, tiek 2xx statusų kodai lankytojui retai pateikiami. Dažniausiai lankytojai mato 3XX arba 4XX ir 5XX kodus, kurie pateikiami lankytojui naršyklėje, kai puslapis dėl vienokių ar kitokių priežasčių negali būti tinkamai užkrautas.

HTTP statusą galima patikrinti naršyklėje naudojantis “Inspect” skiltyje “Network”.

Jei naudojatės Google search console, HTTP statusą galite patikrinti pasirinkus URL tikrinimas ir įrašius konkretų URL:


HTTP atsakymas 200:


HTTP atsakymas 403:


HTTP statuso tikrinimas naudojant komandinę eilutę

Jei norima patikrinti tik patį HTTP atsakymą, galima naudoti curl įrašant šią komandą:

curl -o /dev/null s w „%{http_code}\n” https://svetaines-pavadinimas.lt

Ši komanda išves tik HTTP statuso kodą rezultate:

Naudojant curl -I <URL> bus grąžinamas išsamesnis atsakymas:

Grįžti į sąrašą
0 komentarų
    Parašyti komentarą
    Atšaukti atsakymą