При въвеждане на адрес в браузъра се изпраща HTTP Request(заявка) за обработване към уеб сървъра, която съдържа HTTP Request Header(Заглавна част на HTTP заявката). След като заявката бъде обработена, сървърът връща заявеното съдържание заедно с HTTP Response header(заглавна част на HTTP отговора) към браузъра.
HTTP статус кодовете получаваме именно в HTTP header и те индикират дали определена заявка е обработена, като ни предоставят допълнителна информация. Те могат да индикират успешно завършване на заявката, пренасочване, клиентска грешка или сървърна грешка. Много потребители обаче не разбират значението на тези кодове, въпреки че те говорят много за случилото се.
Какво са HTTP Headers (Заглавни части на HTTP)
Заглавните части на HTTP (HTTP Headers) позволяват на клиента и сървъра да си предават допълнителна информация чрез HTTP заявка или отговор.
Обичайно името на заглавната част и стойността са разделени с двоеточие.
HTTP headers могат да бъдат квалифицирани в 4 вида-
- HTTP Request Header (Заглавна част на HTTP заявката)- Когато се опитате да достъпите дадена страница, браузърът изпраща HTTP заявка към сървъра и съдържа информация от сорта на:
- Тип, възможности и версия на браузъра, който изпраща заявката.
- Използваната от клиента операционна система.
- Заявената страница.
- Различни типове резултати, приети от браузъра.
- HTTP Response Header (Заглавна част на HTTP отговора)- След като сървърът получи заглавната част на заявката, сървърът изпраща HTTP response header към браузъра. Заглавната част на отговора съдържа информация за тип, дата и размер на файла, изпратен от сървъра, както и информация относно сървъра.
- HTTP General Header (HTTP Основна заглавна част) съдържа информация, която е валидна за заявката и отговора, но не съдържа информация относно съдържанието.
- HTTP Representation Header (HTTP Представителна заглавна част) описва конкретното представяне на ресурса, изпратен в тялото на HTTP съобщението. Тя включва Content-Type, Content-Encoding, Content-Language, and Content-Location.
Как да видим HTTP Headers в браузър
За да достъпите HTTP Headers, посетете страница, натиснете десен бутон и изберете “Inspect” или натиснете F12, за да отворите инструмента за разработчици (developers tools).
След това изберете секция “Network”(1), презаредете страницата и изберете някоя HTTP заявка от левия панел(2). След това в десния панел ще се визуализира HTTP header, където може да видите върнатия статус код от заявката(3).
Видове HTTP статус кодове
- 1xx - Информационни кодове, които значат, че сървърът е получил заявка и продължава да я обработва. Тези кодове са временни и се получават докато заявката се обработва.
- 100 Continue - Това означава, че браузърът може да продължи със заявката или да игнорира този код, ако заявката вече е изпълнена.
- 101 Switching Protocols - Браузърът Ви е изисквал от сървъра да размени протоколите и сървърът е извършил това действие. Този код се получава в резултат на Upgrade request header(Надграждане в заглавната част на заявката), като именно там е упоменат протоколът, който бива променен от сървъра.
- 103 Early Hints - Този код е предназначен за използване заедно с Link заглавната част, който позволява на потребителския агент да започне презареждането на ресурси, докато сървърът подготвя отговор.
- 2xx - Успешни кодове, които значат, че заявката е била успешна и браузърът е получил очакваната информация. При тези кодове Google Search Console би обходил адреса.
- 200 OK - Заявката е била успешна.
- 201 Created - Заявката е била успешна и в резултат на това е създаден нов ресурс. Този отговор е обикновено изпращан след POST/PUT заявка.
- 202 Accepted - Заявката е получена, но все още се обработва. Този код е предвиден за случаи, в които друг процес или сървър обработва заявката или групово обработване.
- 203 Non-Authoritative Information - Този код може да се получи, когато се използва прокси. Означава, че прокси сървърът е получил код “200 OK” от главния сървър, но е модифицирал отговора преди да го изпрати към Вашия браузър.
- 204 No Content - Заявката е изпълнена успешно от сървъра, но няма съдържание, което да изпрати за тази заявка.
- 205 Reset Content - Както при код 204, сървърът е изпълнил заявката успешно и няма съдържание, което да изпрати, но изисква актуализирането на документа, който е изпратил тази заявка.
- 206 Partial Content - Този код се използва, когато е изпратен Range заглавна част от клиента, който заявява само част от ресурса.
- 3xx - Пренасочващи кодове, които значат, че заявката е получена успешно, но съдържанието е намерено на друго място от заявеното. Googlebot следва до 10 пренасочвания и, в случай че не получи съдържание до десетото пренасочване, то ще получите redirect error(грешка при пренасочване) в Coverage(Обхват) доклада за страницата в Google Search Console. Имайте предвид, че броят на пренасочванията, които Googlebot проследява, може да са различен брой в зависимост от вида и името на обхождащия бот(user agent).
- 300 Multiple Choices - Понякога е възможно да има множество възможни ресурси, които сървърът да предостави, за да извърши заявената от Вашия браузър заявка. В случая е необходимо да изберете желания ресурс.
- 301 Moved Permanently - URL адресът на заявеното съдържание е бил пренасочен за постоянно и новият URL адрес е предоставен в отговора на заявката.
- 302 Found - URL адресът на заявеното съдържание е бил пренасочен временно и в бъдеще е необходимо да се използва старият URL адрес.
- 303 See Other - Сървърът е изпратил този код, за да насочи клиента към заявения ресурс от друг URI посредством GET заявка.
- 304 Not Modified - Този код известява клиента, че съдържанието не е било модифицирано и клиентът може да продължи да използва същото кеширано съдържание.
- 307 Temporary Redirect - URL адресът на заявеното съдържание е бил пренасочен временно и в бъдеще е необходимо да се използва старият URL адрес. Разликата с код 302 е, че не е възможно да бъде променен HTTP методът на заявката. Ако е използван POST метод в първата заявка, то трябва да се използва POST метод и във втората заявка.
- 308 Permanent Redirect - URL адресът на заявеното съдържание е бил пренасочен за постоянно и новият URL адрес е предоставен в отговора на заявката. Разликата с код 301 е, че не е възможно да бъде променен HTTP методът на заявката. Ако е използван POST метод в първата заявка, то трябва да се използва POST метод и във втората заявка.
- 4xx - Клиентски грешки, които значат, че сайтът или страницата не могат да бъдат достигнати, не са налични или има грешка в изписването на заявката. Google Search Console не обхожда адреси, които връщат 4xx статус код. Адресите, които вече са индексирани и при повторно обхождане върнат 4xx статус код, ще бъдат изтрити от индексирането.
- 400 Bad Request - Сървърът не може да разбере заявката поради невалиден синтаксис.
- 401 Unauthorized - Съобщението означава, че нямате разрешение за достъп до заявената информация или е необходимо да се идентифицирате.
- 402 Payment Required - Оригинално този код е създаден като част от дигитална разплащателна система, но все още не е завършен проектът. Към момента този код се използва от доста платформи за индикация, че заявката не може да бъде изпълнена, обикновено поради липса на средства.
- 403 Forbidden - Този код се получава, когато клиент опита да достъпи нещо, за което няма правомощия. Например при опит за достъпване на съдържание, което е защитено с парола, с грешни данни или без такива.
- 404 Not Found - Сървърът не може да намери заявеното съдържание. Възможна причина е грешен URL адрес или несъществуващ ресурс.
- 405 Method Not Allowed - Заявеният метод е познат на сървъра, но не е поддържан от таргетирания ресурс.
- 406 Not Acceptable - Заявеният ресурс е способен да генерира единствено неприемливо съдържание според заглавните части изпратени в заявката.
- 407 Proxy Authentication Required - Използва се прокси сървър, който задължава браузъра Ви да се удостовери преди да продължи.
- 408 Request Timeout - Този код се получава, когато времето за изчакване на сървъра е изтекло за получаването на пълната заявка от браузъра. Възможна причина е проблем с интернет връзката и загуба на пакети между браузъра и сървъра.
- 409 Conflict - Сървърът не може да обработи заявката от браузъра Ви, защото е наличен конфликт с релевантния ресурс. Възможна причина е множество едновременни редакции.
- 410 Gone - Заявеното съдържание не е налично на сървъра и няма пренасочване към евентуално новия му URL адрес.
- 411 Length Required - Сървърът е отхвърлил заявката, тъй като не е подадена заглавна част относно “Content-Length”(Дължина на съдържанието), която е задължителна.
- 412 Precondition Failed - Браузърът Ви е добавил определени условията към заглавната част на заявката и сървърът не отговаря на тези изисквания.
- 413 Payload Too Large - Заявката Ви е по-голяма от лимита, който сървърът може да обработва.
- 414 URI Too Long - Заявеният URI е по-голям от лимита, който сървърът може да обработва.
- 415 Unsupported Media Type - Заявката включва медиен тип, който сървърът не поддържа.
- 416 Range Not Satisfiable - Заявката Ви е била за част от ресурс, който сървърът няма възможност да предостави. Възможна причина е браузърът Ви да е заредил кеширано съдържание и да се опитва да заяви част от ново съдържание.
- 417 Expectation Failed - Сървърът не отговаря на изискванията, вписани в “Expect” заглавната част на заявката.
- 418 I'm a teapot - Сървърът отказва да приготви кафе, защото той е чайник. Ако чайникът е привършил чая, то трябва да върне грешка 503. Тази грешка е препратка към Hyper Text Coffee Pot Control Protocol(Протокола за управление на каната за кафе с хипертекст), дефиниран в първоаприлските шеги през 1998 и 2014 г.
- 422 Unprocessable Entity - Клиентската заявка съдържа семантични грешки и сървърът не може да я обработи.
- 425 Too Early - Показва, че сървърът не желае да рискува да обработва заявка, която може да бъде повторена.
- 426 Upgrade Required - Сървърът отказва да изпълни заявката, използвайки текущия протокол, но може да я изпълни, след като клиентът надгради до друг протокол. Сървърът изпраща заглавна част за “Upgrade”(Надграждане) в отговор 426, за да посочи необходимия протокол.
- 428 Precondition Required - Сървърът изисква да бъдат посочени условия, преди да обработи заявката.
- 429 Too Many Requests - Потребителят е изпратил твърде много заявки за даден период от време („ограничаване на скоростта“).
- 431 Request Header Fields Too Large - Сървърът не желае да обработи заявката, тъй като полетата на заглавната част са твърде големи. Заявката може да бъде подадена повторно след намаляване на размера на полетата на заглавната част на заявката.
- 451 Unavailable For Legal Reasons - Потребителският агент изисква ресурс, който не може да бъде предоставен законно, като например уеб страница, цензурирана от правителството.
- 499 Client closed request - Това се връща от NGINX, когато клиентът затвори заявката, докато Nginx все още я обработва.
- 5xx - Сървърни грешки, които значат, че изпратената заявка е валидна, но сървърът не може да я обработи. Вероятно най-известната грешка е 500 -Internal Server Error (Вътрешна грешка на сървъра).Това съобщение индикира редица грешки на сървъра, които нямат собствен код. Друга често срещана грешка е 503 Service Unavailable (Услугата не е налична) и се получава, когато сървърът е временно недостъпен. При грешки 5хх Google Search Console временно забавя обхождането на страницата.
- 500 Internal Server Error - Това е общ код, който просто означава „вътрешна грешка в сървъра“. Нещо се е объркало на сървъра и исканият ресурс не може да бъде доставен. Този код обикновено се генерира от плъгини на трети страни, дефектен PHP или дори прекъсване на връзката с базата данни.
- 501 Not Implemented - Тази грешка показва, че сървърът не поддържа функционалността, необходима за изпълнение на заявката. Това почти винаги е проблем на самия уеб сървър.
- 502 Bad Gateway - Тази грешка обикновено означава, че един сървър е получил невалиден отговор от друг, например, когато се използва прокси сървър. В други случаи заявката отнема твърде много време и затова се отменя или убива от сървъра и връзката с базата данни се прекъсва.
- 503 Service Unavailable - Заявката не може да бъде изпълнена в този момент. Този код може да бъде върнат при претоварен сървър, който не е в състояние да се справи с допълнителни заявки.
- 504 Gateway Timeout - Тази грешка се получава, когато има два сървъра, участващи в обработката на заявката и при първия сървър изтече времето за изчакване на втория сървър.
- 505 HTTP Version Not Supported - HTTP версията, използвана в заявката, не се поддържа от сървъра.
- 507 Insufficient Storage - Методът не можа да бъде изпълнен върху ресурса, тъй като сървърът не може да съхрани необходимото съдържание за успешно завършване на заявката.
- 508 - Този код има два варианта:
- Loop Detected - Сървърът откри безкраен цикъл, докато обработва заявката.
- Resource Limit Is Reached - Достигнат е лимитът на ресурси, зададен от уеб сървъра.
- 510 Not Extended - Необходими са допълнителни разширения на заявката, за да може сървърът да я изпълни.
- 511 Network Authentication Required - Този код се изпраща, когато мрежата, която се опитвате да използвате, изисква някаква форма на удостоверяване, преди да изпратите вашата заявка до сървъра. Например, може да се наложи да се съгласите с Общите условия на обществена Wi-Fi точка за достъп.