Сте се запрашале ли што значат HTTP грешките?
Чекај малце… дали воопшто знаеш што се HTTP грешки? Можете ли да препознаете од каде доаѓаат? И – најважното – знаете ли како да ги поправите?
Без грижи! На сите овие прашања постојат одговори, и тука сум за да ви ги објаснам на начин кој нема да ве збуни и да ви предизвика главоболка. 😄
Ако се занимавате со развој на софтвер (или планирате да се занимавате во блиска иднина), познавањето на овие кодови е вашиот џокер! Верувајте, кога ќе ги разберете, пишувањето код ќе биде многу полесно, а грешките – ќе ги решавате како професионалец.
HTTP Грешки – што ти се случува со серверот?
Значи, HTTP грешките се кодови кои ни откриваат зошто серверот се мачи да одговори на барањата на клиентот (читај: корисникот!).
Можеби изгледа застрашувачки да зборуваме за секоја грешка во детали, бидејќи има премногу, но не грижете се! Ќе ги спомнеме сите, а ќе се фокусираме на најпознатите – оние 404, 502, 504 итн.
Основи на HTTP грешките
HTTP статус кодовите се пораки што серверот ги испраќа како одговор на твоето барање. На пример, кога ќе кликнеш на линк или ќе внесеш нешто во прелистувачот, серверот ти кажува дали барањето е завршено успешно или не. Кодот не само што ни кажува дали барањето е завршено, туку и влијае на тоа како пребарувачите ќе ја процесираат содржината на страницата.
Статусните кодови секогаш се трицифрени (лесни за памтење). Некои од овие кодови постојано ни излегуваат пред очи (како на пример, 404!), додека други речиси никогаш нема да ги видиме. Дури и луѓе кои не програмираат може да ги дешифрираат.
Неколку клучни дефиниции:
Клиент е твојот компјутер, телефон, или било кој уред што испраќа барање до серверот.
Сервер, е тоа е оној моќен компјутер што ги чува податоците и се обидува да одговори на твоите барања.
Категории на HTTP Одговори:
Еве брза поделба по категории (кодовите на грешки се делат според првата цифра):
- 5xx Грешки на серверот. Серверот пробува, ама нешто не штима. На пример, 500 е „Оп, внатрешен проблем“, или пак серверот е преполн со барања.
- 4xx Грешки на клиентот. Твојот барање е на погрешен пат.
- 3xx Пренасочување на друга адреса (ова не е грешка, само те префрлува на ново место).
- 2xx Успешно барање. Сè е океј!
- 1xx Информативни пораки. Не е грешка, ништо страшно.
За целосната листа на статусни кодови, погледнете ја спецификацијата на HTTP протоколот. Но, не се замарема со 1xx и 2xx. Ајде да ги разгледаме повнимателно оние “интересните” грешки кои сите ги мразиме!
3xx Кодови – Пренасочување
Со народен јазик да објасниме што се 3xx кодови? Тие се тука за да ти кажат: „Чекај малку, не си на вистинското место, ќе те префрлам таму каде што треба да одиш!“
Овие кодови не се грешки на серверот, туку само се сигнали дека твоето барање треба да се пренасочи на друга локација. Како добар GPS, 3xx кодовите ти кажуваат каде треба да одиш за успешно да завршиш што си започнал.
Значи, овие кодови се дизајнирани да те упатат, а не да те нервираат. Познавањето на 3xx статусите не само што ќе ти помогне како корисник, туку и веб-администраторите ќе можат поефикасно да управуваат со своите сајтови.
Накратко, со 3xx секогаш ќе стигнеш до целта, дури и ако треба да скршнеш на нов пат! 😊
Код | Значење | Карактеристики |
300 | Неколку можни одговори | Код за одговор 300 Multiple Choices значи дека има повеќе поднесени барања на адреса. Клиентот може да избере една од опциите обезбедени од серверот. За правилно индексирање на страницата, корисникот треба да го поправи името на ресурсот или насловите. |
301 | Ресурсот е преместен на нова URL-адреса | Клиентот добива HTTP код 301 Moved Permanently. Претходно индексираниот URL конечно е преместен на ново URL. Роботот ќе ја индексира новата страница. |
302 | Привремено преместено | Клиентот добива 302 Found HTTP код. Ресурсот е привремено достапен на друга адреса. Страницата останува во индексот. Одговорот ја одредува новата адреса на бараната URL-адреса. |
303 | Видете друга адреса | Статусот HTTP 303 See Other покажува дека бараната страница е на друга адреса поради барање GET. Ако сакате страницата да се прикажува во пребарувањето, потребен ви е код за одговор 200. |
304 | Ресурсот не е изменет | HTTP кодот 304 Not Modified се користи за кеширање и значи дека страницата не е променета откако роботот последен пат пристапил до неа. Ова го забрзува индексирањето и заштедува сообраќај. |
305 | Треба да користите прокси | HTTP код 305 Use Proxy значи дека бараниот ресурс е достапен преку прокси-сервер. Деталите за серверот се наведени во одговорот. |
307 | Привремено преместување | Клиентот добива HTTP код 307 Temporary Redirect, што значи дека бараната страница привремено се преселила на нова адреса. Податоците се регистрирани во Location. |
308 | Ресурсот е преместен засекогаш | HTTP кодот 308 Permanent Redirect значи дека ресурсот се наоѓа на друга URL адреса. Податоците се регистрирани во Location. Роботот ја индексира страницата за пренасочување доколку е достапна. |
HTTP грешки oд страна на клиентот, побогу човече што правиш?
Ова се HTTP грешките кои се предизвикани од твоја страна кориснику! Овие грешки се случуваат кога твоето барање до серверот е малку… хм, несоодветно. Ајде да видиме што се може клиент да завркне. Ова се кодовите:
400 Bad Request Барањето е погрешно. Грешката се јавува кога клиентскиот прелистувач испраќа неправилно барање до серверот. Ова може да биде синтаксичка грешка. На пример, на барањето недостасуваат знаци за завршување на линијата.
401 Unauthorized Овој код за грешка на клиентот HTTP покажува дека ресурсот може да се најави со користење на валиден ID и лозинка. Одбивање пристап се случува и ако корисникот погрешно ги внесе податоците за овластување (најава и лозинка). Проблемот ќе се реши кога корисникот ќе се најави.
402 Payment Required Ова е нестандарден HTTP статус. Тоа значи дека барањето не може да се заврши додека корисникот не изврши плаќање. Кодот се користи во платени кориснички услуги, а не во хостинг провајдери.
403 Forbidden Одбивање пристап до бараната страница. Тоа се должи на фактот што корисникот нема права. Пристапот може да биде ограничен за одредени IP-адреси или ако неовластен клиент се обиде да отвори датотеки во системска папка. Овој код се појавува ако серверот открил малициозни податоци.
404 Not Found Ова е еден од најчестите кодови за грешка на клиентот HTTP. Серверот одговара дека страницата не е пронајдена на дадената URL адреса. На пример, страницата е преместена на друга адреса. Не мешајте го кодот 404 со грешката „Серверот не е пронајден“. Во овој случај, клиентот може да комуницира со серверот, но нема податоци за неговото барање.
405 Method Not Allowed Серверот известува дека методот што се користи не може да се користи на овој ресурс. Ќе предложи достапни методи во заглавието Allow.
406 Not Acceptable Овој код за грешка покажува дека бараната содржина не може да се препознае поради кодирање, метод на компресија или други причини.
407 Proxy Authentication Required Пристапот ќе биде отворен ако одите преку овластување преку посреднички сервер (прокси-сервер). Ова е слично на кодот 401.
408 Request Timeout Серверот сака да ја исклучи врската бидејќи обработката на барањето на корисникот го надмина одреденото време. Секој ресурс има свое време на чекање. Корисникот прво треба да ја провери интернет-конекцијата и да ја освежи страницата.
409 Conflict Барањето на корисникот предизвикува конфликт со моменталната состојба на серверот или е некомпатибилно со друго барање.
410 Gone Ова е одговор на серверот кога бараната содржина повеќе не е достапна или е отстранета.
411 Length Required Серверот одбива да го обработи барањето бидејќи не е наведен насловот Content-Length. Мора да ги наведете заглавијата на серверот, така што овој код за грешка на статусот HTTP повеќе нема да се појавува.
412 Precondition Failed Клиентот навел услов во барањата што не може да се исполнат. Едно или повеќе HTTP заглавија беа поставени на false.
413 Request Entity Too Large Големината на барањето ја надминува границата што ја нуди серверот. Серверот може да ја затвори врската. Веб-прелистувачите поддржуваат барања од 2 до 8 килобајти.
414 Request-URI Too Long Веб-серверот има ограничување на должината за обработка и бараната URL-адреса е подолга од наведените граници. За да го избегнете овој код за грешка со барање HTTP, треба да го користите методот GET наместо POST.
415 Unsupported Media Type Барањето на клиентот не може да го обработи серверот. Ова се случува кога податоците се вчитуваат во несоодветен формат. Во овој случај, серверот едноставно го одбива барањето.
416 Requested Range Not Satisfiable Неважечка вредност за бајти на опсег во заглавието на HTTP. Серверот не може да го обработи барањето. Причината може да биде печатна грешка од клиентот.
417 Expectation Failed Серверот го одби барањето на корисникот бидејќи полето Expect е внесено со погрешна вредност.
418 I’m a teapot Ова е првоаприлска шега на програмерите која се појави во 1998 година. Серверот не може да ти свари кафе затоа што е чајник. Во реалноста овој код не се користи.
422 Unprocessable Entity Серверот го гледа барањето на клиентот. Синтаксата е точна, но обработката не е можна поради логичка грешка. Треба да обрнете внимание на семантичкото јадро на страницата.
423 Locked Страницата што корисникот ја бара е блокирана со користење на наведениот метод. Следното решение за проблемот е можно: рестартирајте ги рутерот и компјутерот и користете статичка IP адреса.
424 Failed Dependency Успешноста на ова барање зависи од исходот на другите операции. Ако еден од нив не успее, тогаш ќе паднат и другите. Доколку условите не се исполнети, врската ќе биде прекината.
425 Unordered Collection Овој код за грешка на HTTP се појавува ако клиентот испратил барање што одредува позиција во ненарачана колекција. Исто така, причината за овој код за одговор може да биде употребата на редослед на елементи што се разликува од редоследот на серверот.
426 Upgrade Required Грешката покажува дека протоколот треба да се ажурира. Ги одредува точните екстензии на протоколот со кои треба да се опслужува ресурсот. Оваа грешка се јавува кога серверот бара врска што не е поддржана од клиентот.
428 Precondition Required Овој статусен код значи дека серверот бара барањето да биде условено. Тоа значи дека мора да ги исполнува условите за правилно испраќање податоци до серверот. На овој начин ќе може да обезбеди точни податоци.
429 Too Many Requests Овој код за грешка HTTP се јавува кога корисникот го надминал лимитот на барања испратени за краток временски период. Ова се прави првенствено од безбедносни причини.
431 Request Header Fields Too Large Барањето на корисникот не може да се обработи бидејќи испратеното заглавие беше премногу долго. Исто така, можно е да нема одговор на кодот од серверот. Во овој случај, врската ќе се прекине. Решението на проблемот: намалете ја должината на заглавијата и испратете барање за повторување.
434 Requested Host Unavailable Нема многу инфо за ова, но серверот не може да го најде баранoт хост.
444 No Response Ова е код за грешка на HTTP од страна на клиентот во веб-серверот Nginx. Тој известува дека врската е затворена без испраќање податоци до клиентот. Овој метод не може да се користи во тековната процедура за настан. Nginx е моќен веб-сервер. Најчесто се користи како посредник и обратен сервер. Nginx троши минимални ресурси и поддржува голем број симултани врски.
449 Retry With Грешката покажува дека добиените податоци не се доволни за серверот да го обработи барањето. Се препорачува да се направат прилагодувања на барањето и да се повтори.
450 Blocked by Windows Parental Controls Оваа грешка ќе ја видат децата кои се обидуваат да се логираат на блокиран ресурс. Овој код за одговор може да го избегнете со менување на поставките за родителска контрола.
451 Unavailable For Legal Reasons Клиентот го гледа овој код за грешка на HTTP ако пристапот до страницата е затворен од правни причини. Ова може да бидат владини санкции, цензура или барање на носителот на авторските права за прекршување на авторските права.
456 Unrecoverable Error При обработка на корисничко барање, во базата се појавуваат непоправливи грешки.
499 Client Closed Request Веб-серверот Nginx ја исфрла оваа грешка ако клиентот ја затвори врската додека се обработува. Серверот не може да го врати заглавието на HTTP.
(крај на прв дел)