У свеце вэб-распрацоўкі коды памылак HTTP адыгрываюць важную ролю, уплываючы на карыстацкі досвед і рэпутацыю вэб-сайта. У гэтым артыкуле мы разгледзім поўны спіс кодаў памылак сервера, прааналізуем іх значэнне і даведаемся, як эфектыўна інтэрпрэтаваць коды адказаў сервера, каб вырашаць праблемы і аптымізаваць прадукцыйнасць вэб-прыкладанняў.
Што такое код адказу HTTP
Код адказу HTTP - гэта мова вэб-сервераў, якая перакладае запыты браўзера ў зразумелыя інструкцыі. Гэта як паэт, які адказвае на віртуальныя пытанні, надаючы ім сэнс і кірунак. Коды адказаў не заўсёды з'яўляюцца кодамі памылак HTTP. Напрыклад, «200 OK» азначае, што ўсё ў парадку, але памылка HTTP «404 Not Found» азначае, што старонка згублена ў віртуальнай прасторы. Кожны код з'яўляецца унікальным выразам стану сервера, расшыфроўка якога дазваляе зразумець, што адбываецца па той бок віртуальнага свету.
Коды 1xx (Інфармацыя)
Коды стану 1xx у пратаколе HTTP з'яўляюцца свайго роду першым звяном у дыялогу паміж серверам і кліентам. Замест поўнага адказу на запыт яны даюць інфармацыю аб бягучым стане, што робіць абмен дадзенымі больш эфектыўным. Давайце разгледзім іх больш падрабязна:
100 Працягнуць . Код адказу HTTP, у якім сервер дае карыстальніку зялёнае святло, што дазваляе яму бяспечна працягваць адпраўку вялікага запыту.
101 Пераключэнне пратаколаў . Сервер паведамляе кліенту, што ён змяняе правілы гульні, напрыклад, пераходзіць з HTTP на больш бяспечны HTTPS. У гэтым выпадку для змены пратакола выкарыстоўваецца загаловак «Upgrade».
102 Апрацоўка . Гэты код падобны на паведамленне аб тым, што сервер прыняў запыт, але ўсё яшчэ заняты складанай аперацыяй.
103 Раннія падказкі . Тут сервер адпраўляе кліенту некалькі індыкатыўных загалоўкаў перад асноўным адказам, папярэджваючы пра нешта, што можа быць актуальным у бліжэйшай будучыні.
Код 2xx (паспяхова)
Коды памылак HTTP ў групе 2xx паказваюць паспяховы запыт з сервера. Па сутнасці, яны дзейнічаюць як «зялёнае святло» ў сферы вэб-камунікацый, пацвярджаючы, што ўсё ідзе па плане і паспяхова завершана.
200 OK . Гэты статус выкарыстоўваецца, калі сервер апрацоўвае запыт метадам GET без праблем і вяртае запытаныя дадзеныя ў адказ. Загаловак "Content-Type" паведамляе тып змесціва ў адказе. Ён проста паведамляе кліенту, што запыт быў паспяховым.
201 Створана . Тут сервер аб'яўляе аб стварэнні новага рэсурсу.
202 Прынята . Сервер паведамляе карыстальніку, што запыт быў прыняты, але для адказу спатрэбіцца час.
203 Неаўтарытэтная інфармацыя . Гэты код прадастаўляе кліенту дадзеныя, якія могуць быць неафіцыйнымі, але могуць быць выкарыстаны для параўнання.
204 Няма кантэнту . Сервер апрацаваў запыт, але не вяртае ніякага дадатковага кантэнту.
205 Скінуць змесціва . Тут кліенту даецца інструкцыя скінуць бягучы прагляд або дадзеныя пасля адпраўкі.
206 Частковы змест . Гэты выпадак паказвае, што адказ змяшчае толькі частку запытанага зместу. Загаловак "Content-Range" паказвае дыяпазон частковага зместу.
207 Мультыстатус. Сервер паспяхова выканаў шматаперацыйны запыт ад кліента, і адказ змяшчае інфармацыю пра статус кожнай з аперацый.
226 Выкарыстаны IM . Гэты код паказвае, што сервер выкарыстаў метад паступовых метададзеных (IM) і адказаў, перадаўшы кліенту толькі змененыя часткі рэсурсу.
3xx коды (перанакіраванні)
Коды 3xx у пратаколе HTTP падобныя на паказальнікі, якія накіроўваюць карыстальніка да новага месцазнаходжання рэсурсу. Яны паведамляюць кліенту, што для атрымання запытанага кантэнту або перанакіравання на іншы рэсурс неабходна выканаць наступныя дзеянні. Давайце паглыбімся ў падрабязнасці кожнага з іх:
300 Некалькі варыянтаў . Кліент атрымлівае сігнал аб тым, што існуе некалькі магчымых месцазнаходжанняў для рэсурсу, і ў адказ яму даецца выбар. У цяперашніх абставінах загаловак «Месцазнаходжанне» можа паказваць альтэрнатыўныя варыянты для рэсурсу.
301 Перамешчана назаўсёды. Сервер паведамляе карыстальніку, што рэсурс быў назаўсёды перамешчаны ў іншае месца.
Знойдзена 302. Гэты HTTP-код падобны да часовага перанакіравання. Сервер паведамляе спажыўцу, што рэсурс часова даступны па іншым URL-адрасе. Загаловак "Location" паказвае на новы URL-адрас для часовага перанакіравання.
303 Глядзіце іншае . Кліенту паведамляецца, што рэсурс даступны па іншым URL-адрасе, і ён павінен зрабіць GET-запыт на гэты новы адрас.
304 Не зменена . Гэты статус паведамляе кліенту, што рэсурс застаўся нязменным з моманту апошняга запыту і не патрабуе паўторнай загрузкі. Пры адпраўцы запыту выкарыстоўваецца загаловак "If-Modified-Since", каб праверыць, ці быў рэсурс зменены.
305 Выкарыстоўваць проксі-сервер. У адказ сервер паведамляе, што для доступу да запытанага рэсурсу яму трэба выкарыстоўваць пазначаны проксі-сервер.
306 (зарэзерваваны) — Код быў зарэзерваваны, але фактычна не выкарыстоўваецца.
307 Часовае перанакіраванне . Гэты код падобны да 302 Знойдзена, але патрабуе, каб кліент заставаўся ў метадзе запыту, які выкарыстоўваўся ў першапачатковым запыце.
308 Пастаяннае перанакіраванне . Паказвае, што рэсурс зрабіў пастаянны пераход на новы URI, і кліент павінен выкарыстоўваць новы URI для ўсіх будучых запытаў.
Памылка HTTP 4xx (памылкі кліента)
Коды памылак HTTP 4xx паказваюць на памылкі кліента. Гэта азначае, што праблема на баку карыстальніка, напрыклад, у вэб-браўзеры або дадатку.
400 Няправільны запыт . Сервер не можа апрацаваць запыт з-за сінтаксічных памылак, няправільных дадзеных або іншых памылак на баку кліента.
401 Несанкцыянаваны. Сервер не можа апрацаваць запыт з-за сінтаксічных памылак, няправільных дадзеных або іншых памылак на баку кліента.
402 Патрабуецца аплата . Код у дадзены момант неактыўны і зарэзерваваны для выкарыстання ў будучыні. Гэта можа сведчыць аб неабходнасці аплаты перад доступам да рэсурсу ў будучыні.
Памылка HTTP 403 Забаронена. Кліент не мае дастатковых правоў для доступу да запытанага рэсурсу.
404 Не знойдзена. Запытаны рэсурс не існуе на серверы. Гэта адна з найбольш распаўсюджаных памылак карыстальнікаў.
405 Метад не дазволены . Сервер не падтрымлівае пазначаны метад запыту падчас гэтага рэсурсу. Загаловак «Дазволена» паказвае дазволеныя метады для рэсурсу. З дапамогай гэтага кода,
406 Непрымальна. Сервер не можа прадаставіць дадзеныя ў фармаце, які можа быць прыняты кліентам.
407 Патрабуецца аўтэнтыфікацыя праксі-сервера . Для доступу да запытанага рэсурсу патрабуецца аўтэнтыфікацыя на проксі-серверы.
408 Час чакання запыту скончыўся . Сервер чакаў атрымання запыту ад кліента, але час чакання скончыўся. Загаловак "Retry-After" можа паказваць час, пасля якога можна паўтарыць спробу запыту.
409 Канфлікт. Запыт не можа быць выкананы з-за канфлікту з бягучым станам рэсурсу.
410 Знік . Запытаны рэсурс раней існаваў, але цяпер быў выдалены, і яго аднаўленне не чакаецца.
411 Патрабуецца даўжыня . Сервер патрабуе ўказаць даўжыню змесціва ў запыце; адсутнасць гэтай інфармацыі лічыцца памылкай.
412 Не выканана папярэдняя ўмова . Перадумова ў запыце не выканана, што перашкаджае яго выкананню.
413 Карысная нагрузка занадта вялікая . Памер запыту перавышае абмежаванні сервера.
414 URI занадта доўгі . Даўжыня URI ў запыце перавышае дапушчальныя абмежаванні.
415 Непадтрымоўваны тып носьбіта дадзеных . Сервер не можа апрацаваць тып дадзеных, указаны ў запыце.
416 Дыяпазон не задавальняе . Памылка HTTP, калі запытаны дыяпазон не адпавядае бягучым дадзеным сервера.
417 Чаканне не выканана . Чаканая ўмова ў загалоўку "Expect" не была выканана.
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. Сэрвіс недаступны . Сервер часова не можа апрацоўваць запыты.
504 Час чакання шлюза перавышаны . Сервер, які выконвае функцыі праксі-сервера, не атрымаў своечасовага адказу ад іншага сервера.
505 Версія HTTP не падтрымліваецца . Сервер не падтрымлівае версію пратакола HTTP, указаную ў запыце. У якасці рэзервовага варыянту загаловак «Upgrade» можа паказваць падтрымоўваныя пратаколы.
506 Варыянт таксама вядзе перамовы . Гэты статус не выкарыстоўваецца ў HTTP/1.1; аднак, калі сервер выяўляе ўнутраную канфігурацыю, якая прыводзіць да неадназначнасці ўзгаднення змесціва, ён можа выкарыстаць гэты адказ.
507 Недастаткова месца для захоўвання . Сервер не можа выканаць запыт з-за недастатковай колькасці месца для захоўвання на серверы.
508 Выяўлены цыкл . Сервер выявіў цыкл падчас апрацоўкі запыту і адмаўляецца яго выканаць, каб пазбегнуць бясконцага цыклу.
509 Перавышэнне ліміту прапускной здольнасці . Памылка ўзнікае, калі прапускная здольнасць сервера перавышана з-за вялікага аб'ёму запытаў або трафіку.
510 Не падоўжана . Кліент павінен перадаць дадатковыя пашырэнні, каб працягнуць запыт.
511 Патрабуецца аўтэнтыфікацыя сеткі . Кліент павінен аўтэнтыфікаваць сябе, каб атрымаць доступ да сеткі.
Як праверыць код стану старонкі
У гэтым раздзеле мы разгледзім тры асноўныя спосабы праверкі кода стану старонкі: з дапамогай каманднага радка, з дапамогай вэб-браўзера і з дапамогай незалежных інтэрнэт-сэрвісаў. Кожны з гэтых метадаў мае свае перавагі і можа быць карысны ў розных сітуацыях.
Праверка адказу сервера праз камандны радок
Камандны радок забяспечвае зручны спосаб праверыць код стану старонкі без выкарыстання вэб-браўзера. Для гэтага метаду вам трэба адкрыць камандны радок і выкарыстоўваць каманду:
curl -I http://page-address
Гэтая каманда адпраўляе запыт HEAD (запыт толькі загалоўкаў) на паказаны URL і адлюстроўвае інфармацыю, уключаючы код стану HTTP:
Прыклад вышэй паказвае паспяховы код адказу. У выпадку адказу, які змяшчае код памылкі, напрыклад, памылка HTTP 404 Not Found, вынік будзе выглядаць падобным чынам:
Праверка адказу сервера праз кансоль браўзера
Кансоль распрацоўшчыка вэб-браўзера змяшчае інструменты для правядзення розных аперацый, у тым ліку для праверкі кода стану старонкі. Каб убачыць HTTP-код у адказе сервера, неабходна адкрыць кансоль распрацоўшчыка (Ctrl+Shift+K) або (Ctrl+shift+J) у залежнасці ад выкарыстоўванага браўзера. Далей абярыце раздзел «сетка» і загрузіце патрэбную старонку:
Праверка адказу сервера з дапамогай незалежных інструментаў
Існуе вялікая колькасць незалежных анлайн-сэрвісаў, якія прадастаўляюць інструменты для праверкі кода стану старонкі вэб-сайта. Звычайна гэтыя сэрвісы дазваляюць хутка атрымаць агляд даступнасці і прадукцыйнасці вашага рэсурсу. Усе яны працуюць па адным прынцыпе. У якасці прыкладу мы разгледзім самы папулярны рэсурс — httpsstatus.io.
Перш за ўсё неабходна адкрыць сам сэрвіс, затым увесці адрас старонкі, адказ на якую трэба даведацца, і запытаць праверку:
Вынік будзе паказаны ўнізе старонкі:
Conclusion
У заключэнне варта падкрэсліць, што разуменне і ўменне чытаць коды памылак HTTP з'яўляецца ключавым навыкам для ўсіх, хто займаецца вэб-распрацоўкай і абслугоўваннем сервераў. Калі мы высвятляем кожную памылку і вывучаем інструменты для іх выяўлення, мы бачым прычыны, чаму так важна эфектыўна кіраваць гэтымі аспектамі вэб-сэрвісаў.