HTTP Error “405 Method Not Allowed”: Как да решим проблема

by Jan 23, 2018Знание0 comments

To read the article in English, click here.

Мрежовите сървъри информират клиентите, например уеб браузърите, за статуса на заявения от тях рикуест, чрез HTTP статус кодовете. Затова има различни кодове, които потвърждават успешното или неуспешното извършване на поисканата операция, благодарение на специфичнои съобщения. Ако някои съобщения се срещат сравнително често – с всекидневната употреба на Световната мрежа, то грешка 405, „методът не е позволен“ (Method Not Allowed) е една от най-редките грешки.

Протоколът за трансфер на хипертекст – The Hypertext Transfer Protocol (HTTP) определя методите, които показват възможните действия, които могат да бъдат извършени на сървъра, с който е осъществен контакт. Това включва следните методи:

  • GET: Връща информация, свързана с определен URL ресурс;
  • HEAD: Връща хедър информация, свързана с URL ресурса;
  • POST: Изпраща данни до уеб сървъра, като например данни за формуляри;
  • PUT: Заменя данните на специфичен URL с нови данни, изпратени от клиента;
  • DELETE: Изтрива данните зад въпросния URL.

Администраторът може да настройва всеки уеб сървър така, че отделните методи са или позволени, или забранени. Например, ако няма интерактивно съдържание на уебсайта, това значи, че POST методътн не е позволен, понеже потребителят няма възможност да стигне до данните и да ги прати до сървъра. В противен случай се появява грешка 405, която информира браузъра, че методът не е позволен.

Точната формулировка на съобщението за грешка 405 варира за различните сървъри. Ето няколко често срещани фрази:

  • 405 Method Not Allowed
  • 405 Not Allowed
  • Method Not Allowed
  • HTTP 405 Error
  • HTTP Error 405 – Method Not Allowed
  • HTTP 405 Method Not Allowed
  • Error: 405 Method Not Allowed
  • 405 – HTTP verb used to access this page is not allowed
  • HTTP Status 405 – HTTP method GET is not supported by this URL

Кога се появява грешка 405?

Вече споменахме, че грешка 405 е причинена само от страна на сървъра. Но тъй като статус код 405 технически принадлежи към клиентските съобщения за грешка (кодове, започващи с 4), това изглежда доста безсмислено. Това противоречие бива бързо разрешено чрез: ако, като потребител на браузър, препратите рикуест към уеб сървъра с метод HTTP, който не е позволен, заради настройките му, то тогава грешката е на клиентсктата сттрана от гледната точка на сървъра. В този случай просто клиентът е направил грешен рикуест. На сървъра не му е известно, че се интересувате само от контактната форма на уебсайта, например.

Три сценария могат да доведат до съобщение “Method Not Allowed”:

  1. Забраната на кореспондиращия HTTP метод е заради несъвмертимостта на настройките на сървърни или софтуерни компоненти, които би трябвало да изпълняват рикуестите на URL ресурса.
  2. Забраната на HTTP методът идва от уебсайт оператора – в повечето случаи от мерки за сигурност. Грешката лежи под въпрос на URL ресурса на основание нейното програмиране изисква методът да не бъде разрешен.
  3. HTTP методът не е разрешен от хостинг доставчика на уебсайт оператора. Това се появява чрез POST метода, който се изисква, за да се достигне до данните и бива блокиран от някои доставчици, поради мерки за сигурност, когато се достъпва до HTML документи.

Как да се справим с грешка 405

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

Ако самите вие сте отговорни за сайта, който показва грешка 405 на своите посетители, тогава обстоятелствата са разлини: имете няколко варианта за разрешаване на проблема, в зависимост от причината за появяване на грешката. За да избегнете гнева на потребителите или наказателните мерки на търсещите машини, трябва да решите проблема възможно най-бързо.

Решение 1: Раззрешете HTTP методите

Ако не сте сигурни какво е предизвикало грешка 405, винаги първо трябва да погледнете в настройките на софтуерните компоненти, които са отговорни за HTTP рикуестите. Обикновено това се случва през уеб сървъра, но предварително свързан прокси или HTTP хендлър също може да е отговорен за проблема, ако методът не е разрешен. Понеже различните приложения се различават едно от друго по отношение на настройките, първо трябва да разберете как активацията или деактивацията на HTTP методите функционира за всеки софтуер.

За уеб сървъри Apache методите за разрешаване са определени с помощта на модула  „mod_allowmethods“. Това може да бъде контролирано чрез директивата „Allow Methods” в контейнерите <Location>, от които се нуждаем за да определим настройките за един или повече желани URL-и. Конфигурация, която позволява достъп до ресурса, както и до входа от клиентска страна, може да бъде внедрен чрез следната стойност:

<Location “/”>

AllowMethods GET POST OPTIONS

</Location>

 Внимание: При по-старите версии на Apache, разрешените HTTP методи се определят с директивите <Limit> and <LimitExcept>

Решение 2: Почистете сорс кода

Ако нарочно сте блокирали HTTP метод, например, за да гарантирате сигурността на сайта (често срещана практика при PUT метода), но клиентът все пак изисква такъв рикуест, за да докара URL  ресурси, това се дължи на лошо програмиране на сайта. Изисканата страница, в този случай, е некоректно свързана с метода. Затова и грешка 405 е логично следствие от тези операции. Решението е да намерите проблемния код в кореспондиращия му HTML документ и да го замените с правилен рикуест метод. Ако настройките на сървъра са ревизирани по този начин, има голяма вероятност грешка 405 да изчезне от прозореца на браузъра.

Решение 3: Заобиколете сигурността на доставчика:

Както вече споменахме, грешка 405 може да има заради кореспондиращите HTTP методи за някои MIME типове, като например HTML документ, който е недостъпен поради съображения за сигурност. В този случай можете да се свържете с доставчика си и да поискате разрешение за достъп. Ако това не е възможно, има трикове, които ще Ви позволят все пак да използвате метода.

Можете да осигурите друг тип MIME метод, който да заобиколи бариерата. POST, например, обикновено е деактивиран за HTML страници, но работи в PHP документи. Ако промените разширението  – от индекс .html към индекс .php, има голяма вероятност да решите проблема с грешката.

Вторият трик е да внедрите уебсайта, който причинява HTTP грешката, като съдържание на страницата, която е дала грешката. За да направите това, просто запазете страницата в отделна директория и определете файла като официално съобщение с грешка 405:

ErrorDocument 405 /PathToFile/example.html

Това решение има недостатък – всички успешни страници за достъп до даден сайт са класифицирани като грешки, което усложнява статистическите анализи в последствие.

Share This

Share This

Share this post with your friends!