HTTP 400: Какво означава и как да го поправим?

by Nov 2, 2017Знание0 comments

To read the article in English, click here.

Ако сърфирате в интернет всеки ден, вероятно е имало моменти, в които нещата не са се случвали съвсем по план. Понякога е възможно браузърът Ви да покаже статус код, вместо желаното сайтово съдържание. Когато уеб сървърът и клиентът (браузърът) комуникират помежду си, те си предават статус съобщения. Само ако се появи грешка, ще видите криптирано съобщение за грешка, показано от браузъра. Код 400 показва, че нещо не е било наред с рикуеста на клиента.

Какво значи HTTP 400?

Чрез кодовете уебсървърът разкрива статуса на рикуестите, които клиентът праща. Ако сървърът изпрати код 200 (което обикновено не виждаме, когато сърфираме), това значи, че всичко е наред. Значи, че рикуестът е бил успешен и желаното съдържание е прехвърлено към клиента. Ако се появи съобщение с код 400 или 500, обаче, това показва друг тип грешки.

Всички кодове, започващи с 1… са информативни и всички кодове с 2… са успешни. Интернет потребителите най-често виждат кодове с първо число 3 и нагоре. Това значи, че комуникацията между сървър и клиент е успешна, но клиентът трябва да изпълни някаква допълнителна стъпка. Повечето от тези стъпки имат общо с препращането, което браузърът прави автоматично и което ние забелязваме само в няколко случая.

Различно е, когато стане въпрос за съобщения за грешки: докато грешките, започващи с 5 са свързани със сървъра, всички кодове, започващи с 4 се свързат с лоши рикуести от страна на клиента. Най-известното от тези съобщения е код 404 Not Found. Причината за това съобщение е или неправилно изписан URL, или изтрито съдържание.

Не е лесно да отговорите на въпроса „какво се обърка?“, когато се сблъскате с грешка от типа 400. Рикуестът някак е станал дефектен. Интернет протоколът HTTP не е бил коректно спазен (поне според сървъра), заради което рикуестът не може да бъде изпълнен. Сървърът интерпретира рикуеста като грешен или дори зловреден. Затова възпира сайта от показване. Причините за тази грешка са обикновено свързани с използвания браузър или с потребителска грешка.

Неправилен URL: Точно като грешка 404, лош рикуест се генерира, ако потребителите допуснат грешка при изписването на адреса или въведат символи и знаци, които са забранени.

Неправилни бисквитки: Ако бисквитките в браузъра са стари, също може да се появи грешка от типа 400.

Остарели DNS записи: DNS кешовете може да съдържат данни, които водят към некоректни IP адреси.

Прекалено големи файлове: Ако се опитвате да качвате твърде големи файлове, сървърът може да откаже да ги приеме. Класификацията на такова неразрешено действие би била “Bad Request”.

Твърде дълъг хедър: Когато комуникират, клиентът и сървърът използват хедъра да определи рикуеста. Някои уебсървъри поставят лимит за дължината на хедъра.

Не винаги е ясно още в първия момент какъв е комуникационният проблем, когато се появи грешка 400. Но все пак, ако сървърът използва IIS 7.0, IIS 7.5, или IIS 8.0, по-детайлна информация може да бъде получена от статус кода:

  • 1: Invalid Destination Header
  • 2: Invalid Depth Header
  • 3: Invalid If Header
  • 4: Invalid Overwrite Header
  • 5: Invalid Translate Header
  • 6: Invalid Request Body
  • 7: Invalid Content Length
  • 8: Invalid Timeout
  • 9: Invalid Lock Token

Грешка 400 не се появява само когато сърфираме. Други програми, като например имейл клиенти, също могат да получат такъв статус код, когато комуникират със сървър.

Как да поправим грешка 400?

Когато се появи статус код, обикновено е достатъчно просто да заредим страницата отново. Особено, ако сайтът, на който грешката се е появила, е посещаван често от Вас, то грешката по-скоро е временна. Ако повторното зареждане не помогне, опитайте да изтриете кешовете на браузъра. Може би браузърът Ви пази копие на съобщението с грешката.

Неправилен URL

Следващата стъпка за анализиране на проблема трябва да бъде проверката на URL адреса в браузъра. Проверете дали не сте допуснали грешка в изписването.

Неправилни бисквитки

Проблемът може да се дължи на стари или неправилни бисквитки. Изтрийте записите на бисквитките в браузъра . Когато отворите сайта отново, той записва нова бисквитка.

Неправилен DNS

Опитайте да изтриете DNS кешовете си. Когато браузвате, имената на домейните се транслират в IP адреси, които са свързани към Световната мрежа. За тази операция ни трябва т.н. именен сървър. За да съкрати този процес, компютърът Ви събира данните в DNS кешовете. Само че, когато отново влезете в сайта и кеша не е премахнат автоматично от браузъра, името на сайта ще дойде от кешовете. Ако информацията не е актуализирана, тогава се появява съобщението “Bad Request”.

За да премахнете неправилната стойност, трябва да изтриете целия DNS кеш. Това може да се случи, чрез въвеждането на следната команда в Command Prompt на Вашия Windows:

ipconfig /flushdns

За Mac системи командата е различна, в зависимост от това коя версия на OS използвате. Всички команди се въвеждат чрез терминала:

  • OS X 10.4 (Tiger): lookupd -flushcache
  • OS X 10.5 (Leopard): dscacheutil -flushcache
  • OS X 10.6 (Snow Leopard): dscacheutil – flushcache
  • OS X 10.7 (Lion): sudo killall -HUP mDNSResponder
  • OS X 10.8 (Mountain Lion): sudo killall -HUP mDNSResponder
  • OS X 10.9 (Mavericks): dscacheutil -flushcashe; sudo killall -HUP mDNSResponder
  • OS X 10.10 (Yosemite) (10.10.1 – 10.10.3): sudo discoverutil udnsflashcaches
  • OS X 10.10 (Yosemite) (10.10.4+): sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
  • OS X 10.11 (El Capitan): sudo killall -HUP mDNSResponder
  • macOS 10.12 (Sierra): sudo killall -HUP mDNSResponder

Като потребител – справете се с бисквитките

Проблеми с полето на HTTP хедъра

Грешка 400 се появява ако HTTP хедъра е прекалено дълъг. По принцип хедърите нямат ограничение за размера, но целевия сървър може да има. Хедъра се състои от няколко полета, в което рикуестите и отговорите са предварително определени. Ако и двете страни в комуникацията са със съвпадащи параметри, поисканите данни ще бъдат обменени. Ако има разминаване, се появява съобщение за грешка. Това изисква комуникация между браузъра и сървъра, а грешките от тип 400 обикновено са причинени от клиента. Най-лесният начин да разберете дали проблемът е в браузъра? Опитайте да отворите сайта през друг браузър, а не този по подразбиране.

Ако страницата може да бъде отворена през другия браузър, тогава можете да се върнете на клиента си по подразбиране  и да изтриете всички бисквитки (ако още не сте го направили). От съображения за сигурност е по-добре да изтриете всички, вместо само една. Бисквитките се предават в хедъра и така сървъра научава за предишното Ви посещение. Ако браузърът трябва да се справи с твърде много рикуести, това увеличава размера на хедъра.

Ако и това решение на помогне, можете да опита да преинсталирате напълно браузъра и да го рестартирате до настройките му по подразбиране. В зависимост от това кой браузър ползвате, има различни начини за рестартирането му. За Firefox напишете в „about: support for troubleshooting“. Тук ще намерите голямо количество, която ще Ви помогне да откривате грешки в софтуера. Дори и да се свържете с екипа по поддръжката, пак е добре да знаете за тези данни. На тази сгтраница ще видите бутон, който гласи „Clean up Firefox”. Когато кликнете на него, той ще изтрие разширенията и някои Ваши настройки.

При Internet Explorer ще намерите бутона за рестарт в „Интернет опциите“ в подразделението „Advanced” или „Restore Defaults” (за версия 6). Този браузър Ви позволява да запазите личните си настройки при рестарт, стига да искате. Понеже IE пази кешовете и бисквитките като Ваши настройки, е добре да изтриете и тях.

При Chrome ще намерите функциите за рестартиране в систенмите настройки. Браузърът пази личните Ви данни, като запазени пароли и история, но връща всичко останало на първоначално ниво. Затворете браузъра и го отворете пак, за да видите промените.

Като уеб-мастър – поставете граници

Ако сте уеб-мастър и посетителите се оплакват от грешки от типа 400, тогава промяната на сервизните натройки може и да помогне. За да предпазите потребителите от грешки, свързани с твърде дълъг HTTP хедър, ограничете го Вие. Имайте предвид, че при по-високи граници увеличавате риска от дефектни рикуести.

Hypertext Transfer Protocol (HTTP/1.1): Синтаксис и рутинг на съобщението

Искате все пак да увеличите границата? Всеки уеб сървър си има собствен метод. Например, при IIS (ASP.NET) можете да промените ‘maxRequestLength’ и ‘maxAllowedContentLength’. При Apache се използва командата ‘LimitRequestFieldSize’.

Свържете се с някого

За съжаление, може случаят да е такъв, че нито едно от изброените решения да не реши проблема. В тези случаи е добре да потърсите помощ. По принцип имате 2 лица за контакт, в зависимост от това дали грешка 400 се появява само на определн сайт или на много сайтове. Ако се появява само на определен сайт и оптите да разрешите проблема са неуспешни, можете да се свържете с оператора на уебсайта. Другата възможност (ако съобщението се появява постоянно и на много сайтове) е да се свържете с интернет доставчика си. Дори проблемът да не се корени там, екипът по поддръжката може да успее да Ви помогне.

И в двата случая е добре да дадете на Вашия човек за контакт колкото можете повече информация по проблема. Това включва и опитите, които сте направили, за да разрешите проблема. Трябва да дадете и информация за системата – коя операционна система и браузър използвате? Инсталирали ли сте разширения? Ползвате ли защитна стена или сърфирате през прокси сървър? Всички теззи въпроси са от значение. Желаем Ви успех!

Share This

Share This

Share this post with your friends!