В света на уеб разработката HTTP кодовете за грешки играят жизненоважна роля за повлияване на потребителското изживяване и репутацията на даден уебсайт. В тази статия ще разгледаме пълен списък с кодове за грешки на сървъра, ще анализираме техните значения и ще научим как ефективно да интерпретираме кодовете за отговор на сървъра, за да разрешим проблеми и да оптимизираме производителността на уеб приложенията.
Какво е HTTP код за отговор
HTTP кодът за отговор е езикът на уеб сървърите, който превежда заявките на браузъра в разбираеми инструкции. Това е като поет, който отговаря на виртуални въпроси, като им дава смисъл и посока. Кодовете за отговор не винаги са HTTP кодове за грешки. Например „200 OK“ означава, че всичко е наред, но HTTP грешка „404 не е намерена“ означава, че страницата е изгубена във виртуалното пространство. Всеки код е уникален израз на състоянието на сървъра, чието декодиране ни позволява да разберем какво се случва от другата страна на виртуалния свят.
1xx кодове (информация)
1xx статус кодове в HTTP протокола са нещо като първа връзка в диалога между сървъра и клиента. Вместо да предоставят пълен отговор на заявка, те предоставят информация за текущото състояние, което прави обмена на данни по-ефективен. Нека ги разгледаме по-отблизо:
100 Продължете. HTTP код за отговор, в който сървърът дава зелена светлина на потребителя, позволявайки му безопасно да продължи да изпраща голяма заявка.
101 Протоколи за превключване. Сървърът казва на клиента, че променя правилата на играта, например преминавайки от HTTP към по-сигурния HTTPS. В този случай заглавката „Надстройка“ се използва за промяна на протокола.
102 Обработка. Този код е като съобщение, че сървърът е приел заявката, но все още е зает със сложна операция.
103 Ранни намеци. Тук сървърът изпраща няколко индикативни заглавки на клиента преди основния отговор, предупреждавайки за нещо, което може да бъде от значение в близко бъдеще.
2xx код (успешно)
HTTP кодовете за грешка в групата 2xx показват успешна заявка от сървъра. Те по същество действат като „зелена светлина“ в обхвата на уеб комуникациите, потвърждавайки, че всичко върви по план и е успешно завършено.
200 ОК. Този статус се използва, когато сървърът безпроблемно обработва заявка по метода GET и връща исканите данни в отговор. Заглавката "Content-Type" отчита типа съдържание в отговора. Той просто информира клиента, че заявката е успешна.
Създаден е 201. Тук сървърът обявява създаването на нов ресурс.
202 Приети. Сървърът уведомява потребителя, че заявката е приета, но ще отнеме време, за да отговори.
203 Неавторитетна информация. Този код предоставя на клиента данни, които може да не са официални, но могат да се използват за сравнение.
204 Няма съдържание. Сървърът е обработил заявката, но не връща допълнително съдържание.
205 Нулиране на съдържанието. Тук клиентът се инструктира да нулира текущия изглед или данни след изпращане.
206 Частично съдържание. Този случай показва, че отговорът съдържа само част от исканото съдържание. Заглавката "Content-Range" показва частичния диапазон на съдържанието.
207 Мултистатус. Сървърът е изпълнил успешно заявка за множество операции от клиента и отговорът съдържа информация за състоянието на всяка от операциите.
226 IM Използван. Този код показва, че сървърът е използвал метода на инкрементални метаданни (IM) и е отговорил, като е предал само модифицираните части на ресурса на клиента.
3xx кодове (пренасочвания)
3xx кодовете в HTTP протокола са като указатели, които насочват потребителя към ново местоположение на ресурса. Те информират клиента, че трябва да бъдат предприети последващи стъпки, за да получи исканото съдържание или да бъде пренасочен към друг ресурс. Нека се потопим в детайлите на всеки от тях:
300 множество възможности за избор. Клиентът получава сигнал, че има няколко възможни местоположения за ресурса и получава избор в отговор. При настоящите обстоятелства заглавката „Местоположение“ може да показва алтернативни опции за ресурса.
301 Преместен за постоянно. Сървърът съобщава обратно на потребителя, че ресурсът е преместен за постоянно на друго място.
302 Намерени. Този HTTP код е подобен на временно пренасочване. Сървърът информира потребителя, че ресурсът е временно достъпен на различен URL адрес. Заглавката „Местоположение“ сочи към новия URL адрес за временното пренасочване.
303 Вж. Други. На клиента се казва, че ресурсът е достъпен на различен URL адрес и трябва да направи GET заявка до този нов адрес.
304 не се променя. Този статус казва на клиента, че ресурсът е останал непроменен от последната заявка и не е необходимо да се изтегля отново. Когато правите заявка, заглавието "If-Modified-Since" се използва за проверка дали ресурсът е бил модифициран.
305 Използвайте прокси. Като отговор сървърът съобщава, че трябва да използва посочения прокси за достъп до искания ресурс.
306 (запазен) — Кодът е запазен, но всъщност не се използва.
307 Временно пренасочване. Този код е подобен на 302 Found, но изисква клиентът да остане в метода на заявка, който е бил използван в оригиналната заявка.
308 Постоянен пренасочване. Показва, че ресурсът е направил постоянно преместване към нов URI и клиентът трябва да използва новия URI за всички бъдещи заявки.
4xx HTTP грешка (Клиентски грешки)
Кодовете за грешка HTTP 4xx показват грешки на клиента. Това означава, че проблемът е от страната на потребителя, като уеб браузъра или приложението.
400 Заявка за грешка. Сървърът не може да обработи заявката поради синтактични грешки, невалидни данни или други грешки от страна на клиента.
401 Неразрешено. Сървърът не може да обработи заявката поради синтактични грешки, невалидни данни или други грешки от страна на клиента.
402 Необходимо плащане. Кодът не е активен в момента и е запазен за бъдеща употреба. Може да показва необходимостта от плащане преди достъп до ресурса в бъдеще.
HTTP грешка 403 Забранено. Клиентът няма достатъчно права за достъп до искания ресурс.
404 Страницата не е намерена. Заявеният ресурс не съществува на сървъра. Това е една от най-честите потребителски грешки.
Методът 405 не е разрешен. Сървърът не поддържа указания метод на заявка по време на този ресурс. Заглавието „Разрешаване“ показва разрешените методи за ресурса. С този код,
406 Не е приемливо. Сървърът не може да предостави данни във формат, който може да бъде приет от клиента.
407 Изисква се удостоверяване на прокси. Изисква се удостоверяване на прокси сървър за достъп до искания ресурс.
408 Заявка за изчакване. Сървърът чакаше да получи заявка от клиента, но времето за изчакване изтече. Заглавката „Retry-After“ може да показва времето, след което заявката може да бъде повторена.
409 Конфликт. Заявката не може да бъде изпълнена поради конфликт с текущото състояние на ресурса.
410 Gone. Заявеният ресурс е съществувал преди, но вече е изтрит и не се очаква възстановяването му.
411 Необходима дължина. Сървърът изисква да посочи дължината на съдържанието в заявката; липсата на тази информация се счита за грешка.
412 Предварителното условие не бе успешно. Не е изпълнено предварително условие в заявката, което не позволява изпълнението ѝ.
413 Полезен товар е твърде голям. Размерът на данните за заявката надвишава ограниченията на сървъра.
414 URI твърде дълъг. Дължината на URI в заявката надхвърля допустимите граници.
415 Неподдържан тип носител. Сървърът не може да обработи типа данни, предоставен в заявката.
416 Диапазонът не е задоволим. HTTP грешка, при която заявеният диапазон не съответства на текущите данни на сървъра.
417 Очакването не бе успешно. Очакваното условие в заглавката „Очаквайте“ не е изпълнено.
418 Аз съм чайник. Този код е включен като шега и не предполага никакви реални действия за потребителя или сървъра и не е пълноценна грешка. Това показва, че сървърът е чайник и не може да прави кафе.
421 Неправилно насочена заявка. Сървърът не обработва заявката поради грешка в заявката или конфигурацията на сървъра.
422 Необработваем обект. Сървърът разбира заявката, но не я обработва поради грешки в данните.
423 Заключено. Ресурсът е блокиран и не може да бъде обработен.
424 Неуспешна зависимост. Заявката зависи от друга неизпълнена заявка.
425 Твърде рано. Сървърът не е готов да обработи заявката поради ранното й идване.
426 Изисква се надграждане. Сървърът изисква използването на по-усъвършенстван протокол за обработка на заявката.
428 Изисква се предварително условие. Сървърът изисква определени предварителни условия да бъдат посочени в заявката.
429 Твърде много искания. Клиентът изпрати твърде много заявки за кратко време, надхвърляйки ограниченията на сървъра.
431 Заглавните полета на заявката са твърде големи. Заглавките на заявката надвишават максималния разрешен размер.
449 Опитайте отново с. Показва, че заявката не може да бъде изпълнена от текущия сървър, но може да бъде обработена успешно от друг сървър и клиентът трябва да опита отново заявката с нов URI.
451 Недостъпно поради правни причини. Ресурсът не е наличен по правни причини.
499 Затворена заявка от клиента. Сървърът получи заявката, но връзката беше затворена от клиента преди завършване на обработката.
HTTP 5xx грешка (грешки на сървъра)
Кодовете за грешка HTTP 5xx показват проблеми със сървъра. Тези кодове показват проблеми, възникнали от страна на сървъра, което прави сървъра неспособен да обработи заявката на потребителя по правилния начин. Нека ги разгледаме по-отблизо:
HTTP грешка 500 Вътрешна грешка на сървъра. Сървърът среща неочаквани обстоятелства, които му пречат да изпълни заявката. Заглавката „Сървър“ може да показва сървъра, на който е възникнала грешката.
501 Не се изпълнява. Сървърът не поддържа функционалността, необходима за обработка на заявката на клиента. Заглавката "Via" може да показва прокси сървъра, през който е възникнала грешката.
502 Bad Gateway. Този код означава, че сървърът, който действа като прокси, е получил неправилен отговор от друг сървър.
HTTP грешка 503 Service Unavailable. Сървърът временно не може да обработва заявки.
504 изчакване на шлюза. Сървърът, който действа като прокси, не е получил своевременен отговор от друг сървър.
505 HTTP версия не се поддържа. Сървърът не поддържа версията на HTTP протокола, посочена в заявката. Като резервна опция, заглавката „Надстройка“ може да показва поддържани протоколи.
506 Вариант също се договаря. Това състояние не се използва в HTTP/1.1; обаче, ако сървърът открие вътрешна конфигурация, която води до двусмислие при договаряне на съдържанието, той може да използва този отговор.
507 Недостатъчно съхранение. Сървърът не може да изпълни заявката поради недостатъчно място за съхранение на сървъра.
508 Открит цикъл. Сървърът е открил цикъл при обработката на заявката и отказва да завърши заявката, за да избегне безкраен цикъл.
509 Превишена е границата на лентата. Грешката възниква, когато честотната лента на сървъра е превишена поради голям обем заявки или трафик.
510 Не е разширен. Клиентът трябва да прехвърли допълнителни разширения, за да продължи заявката.
511 Изисква се мрежово удостоверяване. Клиентът трябва да се удостовери, за да получи достъп до мрежата.
Как да проверите кода на състоянието на страницата
В този раздел ще разгледаме три основни начина за проверка на кода на състоянието на страницата: чрез командния ред, с помощта на уеб браузър и с помощта на независими онлайн услуги. Всеки от тези методи има своите предимства и може да бъде полезен в различни ситуации.
Проверка на отговора на сървъра чрез командния ред
Командният ред предоставя удобен начин за проверка на кода на състоянието на страницата, без да се налага да използвате уеб браузър. За този метод трябва да отворите командния ред и да използвате командата:
curl -I http://page-address
Тази команда изпраща HEAD заявка (заявка само за заглавки) към посочения URL адрес и показва информация, включително HTTP кода на състоянието:
Примерът по-горе показва код за успешен отговор. В случай на отговор, който съдържа код за грешка, като 404 Не е намерена HTTP грешка, резултатът ще изглежда подобно:
Проверка на отговора на сървъра чрез конзолата на браузъра
Конзолата за разработчици на уеб браузър предоставя инструменти за извършване на различни операции, включително проверка на кода на състоянието на страницата. За да видите HTTP кода в отговора на сървъра, трябва да отворите конзолата за програмисти (Ctrl+Shift+K) или (Ctrl+shift+J) в зависимост от използвания браузър. След това изберете секцията „мрежа“ и заредете желаната страница:
Проверка на отговора на сървъра с помощта на независими инструменти
Има голям брой независими онлайн услуги, които предоставят инструменти за проверка на кода на състоянието на страницата на уебсайта. Тези услуги обикновено ви позволяват бързо да получите общ преглед на наличността и ефективността на вашия ресурс. Всички те работят на един и същи принцип. Като пример ще разгледаме най-популярния ресурс - httpstatus.io
Първо трябва да отворите самата услуга, след това да въведете адреса на страницата, чийто отговор трябва да намерите, и да поискате проверка:
Резултатът ще се покаже в долната част на страницата:
Заключение
В заключение трябва да се подчертае, че разбирането и възможността за четене на HTTP кодове за грешки е ключово умение за всеки, който се занимава с уеб разработка и поддръжка на сървъри. Докато откриваме всяка грешка и изследваме инструментите за откриването им, виждаме причините защо е толкова важно ефективното управление на тези аспекти на уеб услугите.