Http 405

Привет, читатель блога ZametkiNaPolyah.ru! Продолжим знакомиться с протоколом HTTP в рубрике Серверы и протоколы и ее разделе HTTP протокол. Эта запись целиком и полностью посвящена ошибка клиента при взаимодействие по HTTP протоколу. Мы с тобой рассмотрим коды ошибок клиента HTTP. Вообще, коды ошибок клиента в HTTP протоколе могут быть расширены любым сервером, мы рассмотрим только коды ошибок клиента, которые указаны в стандарте HTTP 1.1. Сперва, как и обычно при рассмотрение кодов HTTP протокола, мы дадим общее описания кодам ошибок клиента, а затем рассмотрим по отдельности каждый из 18 HTTP кодов ошибок клиента.

Общая информация о HTTP кодах ошибок клиента

HTTP коды ошибок клиента говорят пользователю о том, что ему не удалось получить запрашиваемый ресурс, указанный в URI (запись про URI в HTTP), по вине самого пользователя или клиента, например, пользователь ошибся при вводе URL в браузере, в этом случае сервер даст ответ с кодом состояния 404. Все коды ошибок HTTP клиента начинаются с четверки. HTTP сервер всегда в случае ошибки клиента отправляет вместе с кодом состояния пояснения того, почему произошла ошибка, за исключение тех случаев, когда используется HTTP метод HEAD.


Давайте для удобства рассмотрения сведем в одну таблицу все коды ошибок HTTP клиента в одну таблицу. И не будем забывать, что в основе протокола HTTP лежит модель взаимодействия клиент-сервер, которая делит обязанности приложений на клиентские и серверные, рассматриваемый протокол довольно строго придерживается данной модели, и у нас есть специальные коды ошибок, которые происходят по вине серверных приложений и есть коды ошибок, которые происходят по вине человека или клиентского приложения, которым человек пользуется.




Код ошибки HTTP клиента Описание кода ошибки HTTP клиента
400 Bad Request Код состояния ошибки HTTP клиента  400: плохой запрос

Такой код состояния ошибки клиента вы можете увидеть тогда, когда сервер не понял ваш запрос из-за синтаксической ошибке в HTTP запросе.

401 Unauthorized Код состояния ошибки HTTP клиента  401: не авторизован

Такой код состояния ошибки клиента вы можете увидеть в том случае, если для доступа к ресурсу требуется аутентификация по соображениям безопасности HTTP сервера.

402 Payment Required Код состояния ошибки HTTP клиента  402: требуется оплата

Этот код состояния ошибки клиента на данный момент пока не используется, он предназначен для платных сервисов, а не для хостингов и интернет-провайдеров.

403 Forbidden Код состояния ошибки HTTP клиента  403: запрещено

Такой код состояния ошибки клиента вы увидите в том случае, когда сервер вас прекрасно понял, но отказывается вам предоставлять доступ к ресурсу из-за того, что у вас недостаточно прав доступа.

404 Not Found Код состояния ошибки HTTP клиента  404: не найдено

Самый популярный код состояния ошибки клиента. Вы его можете увидеть в том случае, когда ошиблись, вводя URL в браузере.

405 Method Not Allowed Код состояния ошибки HTTP клиента  405: метод не дозволен

Данный код состояния ошибки клиента можно увидеть в том случае, когда вы используете метод запроса, запрещенный в настройках HTTP сервера.

406 Not Acceptable Код состояния ошибки HTTP клиента  406: не приемлем

Этот код состояния вы увидите в том случае, когда HTTP сообщение вашего клиента содержит неправильные параметры для указанного в нем URI.

407 Proxy Authentication Required Код состояния ошибки HTTP клиента  407: требуется установления подлинности через прокси-сервер

Если вы видите этот код состояния ошибки клиента, то вам нужно пройти аутентификацию на прокси-сервере.

408 Request Timeout Код состояния ошибки HTTP клиента  408: истекло время ожидания запроса

Этот код состояния ошибки HTTP клиента вы увидите тогда, когда сервер устал ждать от вас сообщение.

409 Conflict Код состояния ошибки HTTP клиента  409: конфликт

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

410 Gone Код состояния ошибки HTTP клиента  410: удален

А этот код состояния ошибки клиента будет показан сервером в том случае, когда ресурс был доступен по указанному URI, но теперь его там нет.

411 Length Required Код состояния ошибки HTTP клиента  411: требуется длина

Этот код состояния ошибки клиента появляется в том случае, когда серверу нужно обязательно указывать поле заголовка Content-Lenght

412 Precondition Failed Код состояния ошибки HTTP клиента  412: предусловие неверно

Сервер вернет HTTP ответ с таким кодом состояния в том случае, когда он не смог выполнить ни одно из условий из запроса клиента.

413 Request Entity Too Large Код состояния ошибки HTTP клиента  413: объект запроса слишком велик

А такой код ошибки клиента можно увидеть в том случае, когда тело (HTTP объекты и тело сообщения) запроса слишком большое и сервер его получить не смог.

 

414 Request-url Too Long Код состояния ошибки HTTP клиента  414: URI запроса слишком длинный

Такой код ошибки клиента сервер выдаст в том случае, если URI запроса слишком длинный.

415 Unsupported Media Type Код состояния ошибки HTTP клиента  415: неподдерживаемый медиа тип

Сервер может выдать такой код состояния ошибки клиента в том случае, если не захочет работать с указанным типом данных (типы данных в HTTP) тем методом, который указан в запросе клиента

416 Requested Range Not Satisfiable Код состояния ошибки HTTP клиента  416: запрашиваемый диапазон не достижим

Данный код и ошибки клиента говорит нам о том, что диапазон фрагмента (единицы измерения в HTTP) в поле заголовка Range указан неверно.

417 Expectation Failed Код состояния ошибки HTTP клиента  417: ожидаемое неприемлимо

Код состояния ошибки клиента 417 появится в том случае, если сервер не сможет удовлетворить значению, указанному в поле заголовка Expect.


Далее мы рассмотрим более подробно коды ошибок HTTP клиента.

HTTP код ошибки 400, код ошибки 401, код ошибки клиента 402, код ошибки 403, HTTP код ошибки клиента 404, ошибка клиента 405

HTTP код ошибки клиента 400: Bad Request или неверный запрос. Сервер вернет ответ с кодом ошибки 400 в том случае, когда обнаружит, что HTTP запрос клиента содержит синтаксическую ошибку.

HTTP код ошибки клиента 401: Unauthorized или не авторизован. Код ошибки клиента 401 сервер отправляет в том случае, когда для доступа к ресурсу требуется авторизация, при этом ответ HTTP  сервера должен (читай про требования HTTP протокола) включать поле заголовка WWW-Authenticate и перечень условий для аутентификации клиента, после чего клиент может повторить запрос к серверу с полем Authorization, в котором будут указаны все необходимые данные для авторизации.

HTTP код ошибки клиента 402: Payment Required или требуется оплата. Данный код ошибки клиента зарезервирован для будущего использования и предназначен для оповещения клиента о том, что для доступа к ресурсу ему необходимо произвести оплату. Обратите внимание: данный код ошибки клиент не используется ни хостингами, ни интернет-магазина, ни даже интернет-провайдерами.

HTTP код ошибки клиента 403: Forbidden или запрещено. HTTP код ошибки клиента 403 отправляется сервером в том случае, когда он отказывается выполнить ваш запрос, причин на то могут быть разными. При этом сервер не должен сообщать является ли эта мера временной или постоянной. Одной из причин появления HTTP кода 403 может быть то, что у пользователя недостаточно прав доступа к ресурсу.


HTTP код ошибки клиента 404: Not Found или не найдено. HTTP код ошибки клиента 404 – самый популярный код ошибки клиента, код ошибки 404 видел, наверное, каждый. Ведь для того, чтобы увидеть код ошибки 404 достаточно ввести неверный URL.

HTTP код ошибки клиента 405: Method Not Allowed или метод не дозволен. Код ошибки 405 сервер отправляет клиенту в том случае, когда для ресурса, указанного в URI, нельзя применить метод, указанный в запросе клиента. Код ошибки 405 появляется в основном из-за конфигураций безопасности сервера, когда администратор преднамеренно запрещает выполнение тех или иных методов HTTP запросов на сервере. При этом ответ сервера с кодом ошибки 405 должен содержать поле заголовка Allow, в котором будут указаны доступные метода для ресурса.

HTTP код ошибки 406, код ошибки 407, HTTP код ошибки клиента 408, код ответа сервера 409, код ошибки 410, код ошибки клиента 411, HTTP код 412

HTTP код ошибки клиента 406: Not Acceptable или не приемлем.  Код ошибки 406 говорит клиенту о том, что введенный URI не приемлем с теми характеристиками, которые были указаны в HTTP заголовке (читай про параметры HTTP протокола). Если метод запроса был отличным от метода HEAD, то серверу нужно включить в тело сообщения список доступных характеристик для данного URI. Формат HTTP объекта определяется медиа типом в поле заголовка Content-Length и в зависимости от клиента и его возможностей подходящий вариант запроса может быть выбран автоматически, этот код применяется при обсуждении содержимого в HTTP.


HTTP код ошибки клиента 407: Proxy Authentication Required или требуется установление подлинности через прокси-сервер. HTTP код ошибки клиента 407 появится в том случае, когда клиенту для доступа к указанному ресурсу необходимо авторизоваться на прокси-сервере. Когда возникает код ошибки 407 прокси-сервер должен возвратить поле заголовка Proxy-Authenticate содержащее вызов (challenge), применяемый прокси-сервером для запрошенного ресурса. Код ошибки 407 аналогичен по своему действию с кодом 401.

HTTP код ошибки клиента 408: Request Timeout или истекло время ожидания запроса. Код ошибки 408 возникает в том случае, когда клиент не произвел запрос в течение того времени, которое сервер готов ждать, но клиент может повторить запрос.

HTTP код ошибки клиента 409: Conflict или конфликт. Код ошибки клиента 409 возникает в том случае, когда происходит конфликт между несколькими клиентами при доступе к одному ресурсу. Код ошибки 409 показывается клиенту только в том случае, когда тот может устранить конфликт и повторить свой запрос. HTTP ответ сервера должен предоставить максимум информации для пользователя, чтобы он устранил конфликт, и код 409 больше не появлялся. Чаще всего ошибка 409 появляется при использование метода PUT.


HTTP код ошибки клиента 410: Gone или удален. HTTP код ошибки клиента 410 будет отправлен сервером в том случае, когда ресурс удален и сервер не знает, где искать копию ресурса или его новую версию. В том случае, когда у сервера есть информация о том, что ресурс может быть восстановлен, ему не следует показывать ошибку 410, а лучше показать код ошибки 404.

HTTP код ошибки клиента 411: Length Required или требуется длина. Код ошибки 411 будет показан клиенту в том случае, когда серверу для корректной обработки запроса требуется длина содержимого. Клиент может повторить запрос, если добавит допустимое поле заголовка Content-Length, содержащее длину тела сообщения (message-body) в сообщении запроса.

HTTP код ошибки клиента 412: Precondition Failed или предусловие неверно. Код ошибки 412 будет выслан клиенту сервером в том случае, когда сервер не может выполнить условия, указанные в заголовке HTTP запроса.

zametkinapolyah.ru

Эти коды определены www.w3.org/Protocols/rfc2616/rfc2616-sec10.html:

Информационный (Informational 1xx)

Ответы в диапазоне 100-199 — информационные. Они показывают, что запрос клиента принят и обрабатывается.


100=»Continue»
Начальная часть запроса принята, и клиент может продолжать передачу запроса.
101=»Switching Protocols»
Сервер выполняет требование клиента и переключает протоколы в соответствии с указанием, данным в поле заголовка Upgrade.

Запрос клиента успешен (Successful 2xx)

Ответы в диапазоне 200-299 означают, что запрос клиента обработан успешно.

200=»OK»
Запрос клиента обработан успешно, и ответ сервера содержит затребованные данные.
201=»Created»
Этот код состояния используется в случае создания нового URI. Вместе с этим кодом результата сервер выдает заголовок Location (см. главу 19), который содержит информацию о том, куда были помещены новые данные.
202=»Accepted»
Запрос принят, но обрабатывается не сразу. В теле содержимого ответа сервера может быть дана дополнительная информация о данной транзакции. Гарантии того, что сервер в конечном итоге удовлетворит запрос, нет, даже несмотря на то, что на момент приема запрос выглядел допустимым.
203=»Non-Authoritative Information»
Информация в заголовке содержимого взята из локальной копии или у третьей стороны, а не с исходного сервера.
204=»No Content»
Ответ содержит код состояния и заголовок, но тело содержимого отсутствует. При получении этого ответа броузер не должен обновлять свой документ. Обработчик чувствительных областей изображений может возвращать этот код, когда пользователь щелкает на бесполезных или пустых участках изображения.
205=»Reset Content»


Броузер должен очистить форму, используемую в данной транзакции, для дополнительных входных данных. Полезен для CGI-приложений, требующих ввода данных.

206=»Partial Content»

Сервер возвращает лишь часть данных затребованного объема. Используется в ответе на запрос с указанием заголовка Range. Сервер должен указать диапазон, включенный в ответ, в заголовке Content-Range.

233 — because not everyone lives in «your country»

Запрос клиента переадресован (Redirection 3xx)

Код ответа в диапазоне 300-399 означает, что запрос не выполнен и клиенту нужно предпринять некоторые действия для удовлетворения запроса.

300=»Multiple Choices»
Затребованный URI обозначает более одного ресурса. Например, URI может обозначать документ, переведенный на несколько языков. В теле содержимого, возвращенном сервером, может находиться перечень более конкретных данных о том, как выбрать ресурс правильно.
301=»Moved Permanently» — перемещен навсегда
Затребованный URI уже не используется сервером, и указанная в запросе операция не выполнена. Новое местонахождение затребованного документа указывается в заголовке Location. Во всех последующих запросах данного документа следует указывать новый URI.
При запросах не методом HEAD сервер должен передать в теле сообщения гипертекстовое пояснение. При использовании всех методов, кроме GET и POST, предварительно следует уведомить пользователя об изменении ссылки. Не стоить забывать, что некоторые агенты ошибочно меняют метод POST на GET после перехода на другой адрес.
302=»Moved Temporarily» — временно перемещен
Затребованный URI перемешен, но лишь временно. Заголовок Location указывает на новое местонахождение. Сразу же после получения этого кода состояния клиент должен разрешить запрос при помощи нового URI, но во всех последующих запросах необходимо пользоваться старым URI.
При всех методах кроме HEAD сервер должен передать в теле гипертекстовое пояснение. При использовании всех отличных от GET и POST методов предварительно следует уведомить пользователя об изменении URI. При обращении к следующему ресурсу метод POST на GET менять следует как это делают некоторые агенты.
303=»See Other»
Затребованный URI можно найти по другому URI (указанному в заголовке Location). Его следует выбрать методом GET по данному ресурсу.
304=»Not Modified»

Это код ответа на заголовок lf-Modified-Since, если URI не изменялся с указанной даты. Тело содержимого не посылается, и клиент должен использовать свою локальную копию.

305=»Use Proxy»

Доступ к затребованному URI должен осуществляться через proxy-сервер, указанный в заголовке Location.

306=»(Unused)»

307=»Temporary Redirect»

Запрос клиента является неполным (Client Error 4xx)

Коды ответов в диапазоне 400-499 означают, что запрос клиента неполный. Эти коды могут также означать, что от клиента требуется дополнительная информация.

400=»Bad Request»
Означает, что сервер обнаружил в запросе клиента синтаксическую ошибку.
401=»Unauthorized» — требуется авторизация
Этот код результата, передаваемый с заголовком WWW-Authenticate, показывает, что пославший запрос пользователь не имеет необходимых полномочий и что при повторении запроса с указанием данного URI пользователь должен такие полномочия предоставить.
402=»Payment Required»
Этот код в HTTP еще не реализован.
403=»Forbidden»
Запрос отклонен по той причине, что сервер не хочет (или не имеет возможности) ответить клиенту.
404=»Not Found» — не найдено
Документ по указанному URI не существует.
405=»Method Not Allowed» — метод не поддерживается
Этот код выдается с заголовком Allow и показывает, что метод, используемый клиентом, для данного URI не поддерживается.
406=»Not Acceptable»
Ресурс, указанный клиентом по данному URI, существует, но не в том формате, который нужен клиенту. Вместе с этим кодом сервер выдает заголовки Content-Language, Content-Encoding и Content-Type.
407=»Proxy Authentication Required» Прокси-сервер затребовал авторизацию.
Proxy-сервер должен санкционировать запрос перед тем, как пересылать его. Используется с заголовком Proxy-Authenticate.
408=»Request Time-out»
Этот код ответа означает, что клиент не передал полный запрос в течение некоторого установленного промежутка времени (который обычно задается в конфигурации сервера) и сервер разрывает сетевое соединение.
409=»Conflict»
Данный запрос конфликтует с другим запросом или с конфигурацией сервера. Информацию о конфликте следует возвратить в информационной части ответа.
410=»Gone»
Данный код показывает, что затребованный URI больше не существует и навсегда удален с сервера.
411=»Length Required»
Сервер не примет запрос без указанного в нем заголовка Content-Length.
412=»Precondition Failed»
Результат вычисления условия, заданного в запросе одним или несколькими заголовками if. . ., представляет собой «ложь».
413=»Request Entity Too Large»
Сервер не будет обрабатывать запрос, потому что его тело слишком велико.
414=»Request-URI Too Long» — запрос слишком длинный
Сервер не будет обрабатывать запрос, потому что его URI слишком длинный.
415=»Unsupported Media Type»

Сервер не будет обрабатывать запрос, потому что его тело имеет неподдерживаемый формат.

416=»Requested Range Not Satisfiable»

Запрашиваемый диапазон не допустим

417=»Expectation Failed»

Ожидание не удалось

422=»Unprocessable Entity» — сервер успешно принял запрос, может работать с указанным видом данных (например, в теле запроса находится XML-документ, имеющий верный синтаксис), однако имеется какая-то логическая ошибка, из-за которой невозможно произвести операцию над ресурсом.
В некоторых системах используется для передачи требования дополнительных данных: NOT ENOUGH DATA (не хвататет данных) 429=»You exceeded the rate limit»

Превышен лимит запросов

449 — Retry with a proxy in another country.

450=Rating Service Unavailable

451=Unavailable For Legal Reasons

доступ к ресурсу ограничен из-за проблем с законом. 451 — Site is not permitted in your country

452 could be site not permitted by employer,

453 could be site not permitted by ISP

460 Blocked by Repressive Regime

Ошибки сервера (Server Error 5xx)

Коды ответов в диапазоне 500-599 показывают, что сервер столкнулся с ошибкой и, вероятно, не сможет выполнить запрос клиента.

500=»Internal Server Error»
При обработке запроса на сервере один из его компонентов выдал аварийный отказ или столкнулся с ошибкой конфигурации. Часто бывает связанно с ошибками в файле .htaccess
501=»Not Implemented»
Клиент запросил выполнение действия, которое сервер выполнить не может.
502=»Bad Gateway»
Сервер (или proxy-сервер) получил недопустимые ответы другого сервера (или proxy-сервера).
503=»Service Unavailable»
Данный код означает, что данная служба временно недоступна, но в будущем доступ к ней будет восстановлен. Если сервер знает, когда это произойдет, может быть также выдан заголовок Retry-After.
504=»Gateway Time-out»
Этот ответ похож на 408 (Request Time-out), за исключением того, что шлюз или уполномоченный сервер превысил лимит времени.
505=»HTTP Version not supported»

Сервер не поддерживает версию протокола HTTP, использованную в запросе.

560 — Server is being censored

Ошибки ( Error 7xx)

701 — Your ISP is being a twat.

702 — Your organization is being a twat.

703 — Your government is being a twat

704 — Your ISP is being a twat, and has messed with your DNS request, sending you to a spamvertizement for the domain requested.

705 — Your ISP is throttling / packet shaping the living hell out of your connection.

706 — Variant HTML requested (mobile, Flash-free….lots of flags in here).

707 — The current server time (in ticks since the epoch) & the server’s time zone.

htmlweb.ru

Программное обеспечение, используемое в этом руководствеSoftware used in this tutorial

  • Internet Information Services (IIS) (версии 7 или более поздней версии)Internet Information Services (IIS) (version 7 or later)
  • Веб-APIWeb API

Веб-API приложения обычно используют распространенные HTTP-команды: GET, POST, PUT, DELETE, а иногда и PATCH.Web API applications typically use several common HTTP verbs: GET, POST, PUT, DELETE, and sometimes PATCH. Неудачна разработчикам можете оказаться в ситуации, где эти команды реализуются другой модуль IIS на их рабочем сервере, который ведет к ситуации, куда будет возвращать контроллер Web API, правильно работающая в Visual Studio или на сервере разработки HTTP 405 ошибки при развертывании на рабочем сервере.That being said, developers may run into situations where those verbs are implemented by another IIS module on their production server, which leads to a situation where a Web API controller that works correctly in Visual Studio or on a development server will return an HTTP 405 error when it is deployed to a production server. К счастью, эту проблему легко устранена, но разрешение гарантирует объяснение, почему возникают проблемы.Fortunately this problem is easily resolved, but the resolution warrants an explanation of why the problem is occurring.

Что вызывает ошибки HTTP 405What causes HTTP 405 errors

Первый шаг к обучения как ошибки HTTP 405 — понять, что фактически означает ошибку HTTP 405.The first step toward learning how to trouble HTTP 405 errors is to understand what an HTTP 405 error actually means. Управляющий основной тип документа для протокола HTTP — это RFC 2616, который определяет код состояния HTTP 405, когда метод запрещени более подробно описывающими этот код состояния, как состояние где "метод указанный в строке запроса не допускается для ресурса, указанного в URI запроса." Другими словами HTTP-команду для конкретного URL-адреса HTTP-клиент запросил не допускается.The primary governing document for HTTP is RFC 2616, which defines the HTTP 405 status code as Method Not Allowed, and further describes this status code as a situation where "the method specified in the Request-Line is not allowed for the resource identified by the Request-URI." In other words, the HTTP verb is not allowed for the specific URL that an HTTP client has requested.

В качестве краткого обзора ниже приведены некоторые из наиболее часто используемые методы HTTP как определено в RFC 2616, RFC 4918 и RFC 5789.As a brief review, here are several of the most-used HTTP methods as defined in RFC 2616, RFC 4918, and RFC 5789:

Метод HTTPHTTP Method ОписаниеDescription
ПОЛУЧИТЬGET Этот метод используется для получения данных из URI и он, вероятно, наиболее часто используемые метод HTTP.This method is used to retrieve data from a URI, and it probably the most-used HTTP method.
HEADHEAD Этот метод является очень похоже на метод GET, за исключением того, что она не извлекает фактически не данные из URI запроса — он просто получает сведения о состоянии HTTP.This method is much like the GET method, except that it doesn’t actually retrieve the data from the request URI — it simply retrieves the HTTP status.
ПОМЕСТИТЬPOST Этот метод обычно используется для отправки новых данных к URL-АДРЕСУ; POST часто используется для отправки данных формы.This method is typically used to send new data to the URI; POST is often used to submit form data.
PUTPUT Этот метод обычно используется для отправки необработанных данных в универсальный код Ресурса; PUT часто используется для отправки данных JSON или XML в приложениях Web API.This method is typically used to send raw data to the URI; PUT is often used to submit JSON or XML data to Web API applications.
УДАЛЕНИЕDELETE Этот метод используется для удаления данных из URI.This method is used to remove data from a URI.
ПАРАМЕТРЫOPTIONS Этот метод обычно используется для получения списка методов HTTP, которые поддерживаются для URI.This method is typically used to retrieve the list of HTTP methods that are supported for a URI.
КОПИРОВАНИЕ ПЕРЕМЕЩЕНИЕCOPY MOVE Эти два метода используются с WebDAV, и их назначение — говорит само за себя.These two methods are used with WebDAV, and their purpose is self-explanatory.
MKCOLMKCOL Этот метод вызывается WebDAV, и он используется для создания коллекции (например, каталог) по указанному URI.This method is used with WebDAV, and it is used to create a collection (e.g. a directory) at the specified URI.
PROPFIND PROPPATCHPROPFIND PROPPATCH Эти два метода используются с WebDAV, и они используются для запроса или задать свойства для URI.These two methods are used with WebDAV, and they are used to query or set properties for a URI.
РАЗБЛОКИРОВАТЬ БЛОКИРОВКИLOCK UNLOCK Эти два метода используются с WebDAV, и они используются, чтобы заблокировать или разблокировать ресурс, идентифицируемый URI запроса при создании.These two methods are used with WebDAV, and they are used to lock/unlock the resource identified by the request URI when authoring.
ИСПРАВЛЕНИЕPATCH Этот метод используется для изменения существующего ресурса HTTP.This method is used to modify an existing HTTP resource.

Если один из этих методов HTTP настроена для использования на сервере, сервер вернет код состояния HTTP и других данных, который подходит для запроса.When one of these HTTP methods is configured for use on the server, the server will respond with the HTTP status and other data that is appropriate for the request. (Например, метод GET может получать HTTP 200 ОК ответа, а метод PUT может получать HTTP 201 Created ответ.)(For example, a GET method might receive an HTTP 200 OK response, and a PUT method might receive an HTTP 201 Created response.)

Если метод HTTP не настроен для использования на сервере, сервер вернет HTTP 501 не реализован ошибки.If the HTTP method is not configured for use on the server, the server will respond with an HTTP 501 Not Implemented error.

Тем не менее, при HTTP-метода была настроена для использования на сервере, но она была отключена для заданного URI, сервер будет отправить в ответ HTTP 405 метод запрещен ошибки.However, when an HTTP method is configured for use on the server, but it has been disabled for a given URI, the server will respond with an HTTP 405 Method Not Allowed error.

Ошибка HTTP 405 примерExample HTTP 405 error

Следующий пример HTTP-запрос и ответ показаны ситуации, где HTTP-клиент пытается ПОМЕСТИТЬ значение в веб-API приложение на веб-сервере, а сервер возвращает ошибку HTTP, что состояния, которые метод PUT не допускается.The following example HTTP request and response illustrate a situation where an HTTP client is attempting to PUT value to a Web API application on a web server, and the server returns an HTTP error which states that the PUT method is not allowed:

HTTP-запроса:HTTP Request:

PUT /api/values/1 HTTP/1.1 Content-type: application/json Host: localhost Accept: */* Content-Length: 12  "Some Value" 

HTTP-ответа:HTTP Response:

HTTP/1.1 405 Method Not Allowed Cache-Control: no-cache Pragma: no-cache Content-Type: application/json; charset=utf-8 Expires: -1 Server: Microsoft-IIS/8.0 X-Powered-By: ASP.NET Date: Wed, 15 May 2013 02:38:57 GMT Content-Length: 72  {"Message":"The requested resource does not support http method 'PUT'."} 

В этом примере клиент HTTP при отправке запроса JSON допустимый URL-адрес для веб-API приложения на веб-сервере, но сервер вернул сообщение об ошибке HTTP 405, который указывает, что метод PUT не разрешалось использовать URL-адреса.In this example, the HTTP client sent a valid JSON request to the URL for a Web API application on a web server, but the server returned an HTTP 405 error message which indicates that the PUT method was not allowed for the URL. Напротив, если URI запроса не соответствует маршрут для приложения веб-API, сервер вернет HTTP 404 не найден ошибки.In contrast, if the request URI did not match a route for the Web API application, the server would return an HTTP 404 Not Found error.

Устранение ошибок HTTP 405Resolve HTTP 405 errors

Существует несколько причин, почему определенные HTTP-команда не может быть разрешен, но есть основной скрипт, является ведущим причиной этой ошибки в службах IIS: несколько обработчиков определены для одной команды или метода, и один из обработчиков блокирует ожидаемый из обработчика обработку запроса.There are several reasons why a specific HTTP verb may not be allowed, but there is one primary scenario that is the leading cause of this error in IIS: multiple handlers are defined for the same verb/method, and one of the handlers is blocking the expected handler from processing the request. Посредством объяснение IIS обрабатывает обработчики из первых последнего на основе порядка обработчик записей в файле applicationHost.config и web.config, где первый соответствующим сочетанием из пути, команды, ресурсов и др., будет использоваться для обработки запроса.By way of explanation, IIS processes handlers from first to last based on the order handler entries in the applicationHost.config and web.config files, where the first matching combination of path, verb, resource, etc., will be used to handle the request.

Следующий пример представляет выдержку из файла applicationHost.config по использованию IIS server, который возвращается ошибка HTTP 405, при использовании метода PUT для отправки данных в приложении веб-API.The following example is an excerpt from an applicationHost.config file for an IIS server that was returning an HTTP 405 error when using the PUT method to submit data to a Web API application. В этом фрагменте определяются несколько обработчиков HTTP и каждый обработчик имеет другой набор методов HTTP, для которых настроена — обработчику статического содержимого, который является обработчиком по умолчанию, используемый после другие обработчики имели chanc является последней записи в списке e, чтобы запрос на:In this excerpt, several HTTP handlers are defined, and each handler has a different set of HTTP methods for which it is configured — the last entry in the list is the static content handler, which is the default handler that is used after the other handlers have had a chance to examine the request:

<handlers accessPolicy="Read, Script">  <add name="WebDAV"  path="*"  verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK"  modules="WebDAVModule"  resourceType="Unspecified"  requireAccess="None" />  <add name="ISAPI-dll"  path="*.dll"  verb="*"  modules="IsapiModule"  resourceType="File"  requireAccess="Execute"  allowPathInfo="true" />  <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"  path="*."  verb="GET,HEAD,POST,DEBUG"  modules="IsapiModule"  scriptProcessor="%windir%Microsoft.NETFramework64v4.0.30319aspnet_isapi.dll"  preCondition="classicMode,runtimeVersionv4.0,bitness64"  responseBufferLimit="0" />   <!-- Additional handlers will be defined here. -->   <add name="StaticFile"  path="*"  verb="*"  modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule"  resourceType="Either"  requireAccess="Read" /> </handlers> 

В приведенном выше примере обработчик WebDAV и обработчик URL-адресов без расширений для ASP.NET (который используется для веб-API) четко определяются для отдельные списки в HTTP-методов.In the above example, the WebDAV handler and the Extension-less URL Handler for ASP.NET (which is used for Web API) are clearly defined for separate lists of HTTP methods. Обратите внимание на то, что обработчик ISAPI DLL настроена для всех методов HTTP, несмотря на то, что эта конфигурация не обязательно вызывает ошибку.Note that the ISAPI DLL handler is configured for all HTTP methods, although this configuration will not necessarily cause an error. Тем не менее параметры конфигурации, как это необходимо учитывать при устранении ошибок HTTP 405.However, configuration settings like this need to be considered when troubleshooting HTTP 405 errors.

В приведенном выше примере обработчик ISAPI DLL не проблема; на самом деле проблема не был определен в файле applicationHost.config для сервера IIS — причина запись в файле web.config, при создании приложения веб-API в Visual Studio.In the above example, the ISAPI DLL handler was not the problem; in fact, the problem was not defined in the applicationHost.config file for the IIS server — the problem was caused by an entry that was made in the web.config file when the Web API application was created in Visual Studio. В следующем фрагменте из файла web.config приложения показано расположение проблемы:The following excerpt from the application’s web.config file shows the location of the problem:

<handlers accessPolicy="Read, Script">  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />  <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"  path="*."  verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"  modules="IsapiModule"  scriptProcessor="%windir%Microsoft.NETFramework64v4.0.30319aspnet_isapi.dll"  preCondition="classicMode,runtimeVersionv4.0,bitness64"  responseBufferLimit="0" /> </handlers> 

В этом фрагменте обработчик URL-адресов без расширений для ASP.NET переопределяется для включения дополнительных методов HTTP, которые будут использоваться в приложении веб-API.In this excerpt, the Extension-less URL Handler for ASP.NET is redefined to include additional HTTP methods that will be used with the Web API application. Тем не менее так как для обработчика WebDAV определен аналогичный набор методов HTTP, возникает конфликт.However, since a similar set of HTTP methods is defined for the WebDAV handler, a conflict occurs. В этом конкретном случае обработчик WebDAV определяется и загрузки службами IIS, несмотря на то, что WebDAV отключен для веб-сайта, которая включает приложение веб-API.In this specific case, the WebDAV handler is defined and loaded by IIS, even though WebDAV is disabled for the website that includes the Web API application. Во время обработки запроса HTTP PUT, IIS вызывает модуль WebDAV, так как он определен для команды PUT.During the processing of an HTTP PUT request, IIS calls the WebDAV module since it is defined for the PUT verb. При вызове модуля WebDAV, он проверит свою конфигурацию и видит, что она отключена, так что он возвращает HTTP 405 метод запрещен ошибку для любого запроса, который похож на запрос WebDAV.When the WebDAV module is called, it checks its configuration and sees that it is disabled, so it will return an HTTP 405 Method Not Allowed error for any request that resembles a WebDAV request. Чтобы устранить эту проблему, следует удалить из списка модулей HTTP для веб-сайта, где определяется веб-API приложения WebDAV.To resolve this issue, you should remove WebDAV from the list of HTTP modules for the website where your Web API application is defined. В следующем примере показано, что, может выглядеть следующим образом:The following example shows what that might look like:

<handlers accessPolicy="Read, Script">  <remove name="WebDAV" />  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />  <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"  path="*."  verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"  modules="IsapiModule"  scriptProcessor="%windir%Microsoft.NETFramework64v4.0.30319aspnet_isapi.dll"  preCondition="classicMode,runtimeVersionv4.0,bitness64"  responseBufferLimit="0" /> </handlers> 

Этот сценарий часто встречающихся после публикации приложения из среды разработки в рабочей среде, и это происходит, поскольку список обработчиков и модулей, отличается от среды разработки и рабочей среде.This scenario is often encountered after an application is published from a development environment to a production environment, and this occurs because the list of handlers/modules is different between your development and production environments. Например, если вы используете Visual Studio 2012 или более поздней версии, чтобы разработать приложение веб-API IIS Express является сервером по умолчанию для тестирования.For example, if you are using Visual Studio 2012 or later to develop a Web API application, IIS Express is the default web server for testing. Этот веб-сервер разработки является упрощенной версией полной функциональности IIS, входящий в серверный продукт, и этот веб-сервер разработки содержит несколько изменений, которые были добавлены для сценариев разработки.This development web server is a scaled-down version of the full IIS functionality that ships in a server product, and this development web server contains a few changes that were added for development scenarios. Например модуль WebDAV часто установлен на рабочий веб-сервер под управлением полной версии IIS, несмотря на то, что может оказаться на практике.For example, the WebDAV module is often installed on a production web server that is running the full version of IIS, although it may not be in actual use. Версии разработки IIS (IIS Express), будет установлен модуль WebDAV, но записи для модуля WebDAV намеренно закомментированы, чтобы модуль WebDAV никогда не был загружен на сервер IIS Express, если конфигурации IIS Express параметры, чтобы добавить функциональными возможностями WebDAV в установку IIS Express.The development version of IIS, (IIS Express), installs the WebDAV module, but the entries for the WebDAV module are intentionally commented out, so the WebDAV module is never loaded on IIS Express unless you specifically alter your IIS Express configuration settings to add WebDAV functionality to your IIS Express installation. Таким образом веб-приложение может работать должным образом на компьютере разработчика, но могут возникнуть ошибки HTTP 405, при публикации веб-API приложения на веб-сервер в рабочей среде.As a result, your web application may work correctly on your development computer, but you may encounter HTTP 405 errors when you publish your Web API application to your production web server.

СводкаSummary

HTTP 405 ошибки возникают в том случае, если метод HTTP не разрешен веб-сервером для запрошенного URL-адреса.HTTP 405 errors are caused when an HTTP method is not allowed by a web server for a requested URL. Это условие часто рассматривается при конкретной обработчик был определен для определенной команды, и этот обработчик переопределяет обработчик, который предполагается, что для обработки запроса.This condition is often seen when a particular handler has been defined for a specific verb, and that handler is overriding the handler that you expect to process the request.

Если возникнет ситуация, когда появляется сообщение об ошибке HTTP 501, это означает, что конкретные функции не был реализован на сервере, это часто означает, что нет обработчика, заданных в параметрах IIS, которая согласуется с HTTP-запроса, который Возможно, указывает, что что-то неправильно установлен на компьютере или что-то изменил параметры IIS, таким образом, что обработчики отсутствуют определенные этот метод для поддержки конкретных HTTP.If you encounter a situation where you receive an HTTP 501 error message, which means that the specific functionality has not been implemented on the server, this often means that there is no handler defined in your IIS settings which matches the HTTP request, which probably indicates that something was not installed correctly on your system, or something has modified your IIS settings so that there are no handlers defined that support the specific HTTP method. Разрешить эту проблему, необходимо повторно установить любое приложение, которое пытается использовать метод HTTP, для которого он не имеет соответствующего модуля и определения обработчика.To resolve that issue, you would need to reinstall any application that is attempting to use an HTTP method for which it has no corresponding module or handler definitions.

docs.microsoft.com

Как указан на @MarkThomas вы можете сделать любой HTTP запрос, если вы объявите свою страницу JSP, как errorPage как этот
enter image description here
Если вы не хотите, чтобы сделать это, то есть еще одна альтернатива
1. Создать фильтр (если вы непосредственно хотите вызвать JSP страницу) или создать сервлет (который будет в конечном итоге вызов JSP страницы)
2. Делайте это в doFilter() или в случае сервлет doPut()/doDelete()
enter image description here
Здесь я делаю это в Фильтр, где requestServletRequest объект.
Я использую HttpRequestWrapper обернуть исходный запрос с поддельным запроса и говорю это, чтобы вернуть POST для DELETE и PUT запросы так JSP думает сво POST запрос и выполнения страницы, единственным недостатком является то, вы не будете в состоянии рассказать, каков был первоначальный запрос; это также можно охватить, если вы установите атрибут с оригинальным именем метода, например,

HttpServletRequest req = (HttpServletRequest) request;   request.setAttribute("method", req.getMethod());   req.getRequestDispatcher("/WEB-INF/resources/" + resourceName + ".jsp").forward(new HttpServletRequestWrapper(req) {   @Override   public String getMethod() {   String method = super.getMethod();   if (method.equalsIgnoreCase("delete") || method.equalsIgnoreCase("put")) {   return "POST";   } else {   return method;   }   }   }, response);  

stackoverrun.com

What is Error 405

The HTTP protocol defines methods to indicate the action to be performed on the Web server for the particular URL resource identified by the client (e.g. your Web browser or our CheckUpDown robot). The methods are as follows:

  • OPTIONS: Find out the communication options available for a particular URL resource. Allows the client to determine the options and/or requirements associated with a resource, or the capabilities of a server, without a specific action involving transfer of data.
  • GET: Retrieve the information identified by the URL resource e.g. GET a particular Web page or image. The most common method by far.
  • HEAD: Identical to GET except that the server returns header information only, not the actual information identified by the URL resource. Useful to obtain metainformation about the entity implied by the request without transferring the entity-body itself. Often used to test hypertext links for validity, accessibility, and recent modification.
  • POST: Submit data to the Web server such as 1) post a message to a bulletin board, newsgroup or mailing list, 2) provide input data — typically from a CGI form — to a data-handling process, 3) add a record directly to a database.
  • PUT: Set (place/replace) the data for a particular URL to the new data submitted by the client. For example, upload a new Web page to a server.
  • DELETE: Remove the data associated with the URL resource. For example, delete a Web page.
  • TRACE: Run a remote, application-layer loop-back of the request message. Effectively a ‘ping’ which tests what data the Web server is receiving from the client.
  • CONNECT: Reserved for use with tunneling (e.g. SSL) via a proxy server. This method is defined only for HTTP version 1.1, not the earlier version 1.0.

All Web servers can be configured to allow or disallow any method. For example if a Web server is ‘read-only’ (no client can modify URL resources on the Web server), then it could be set up to disallow the PUT and DELETE methods. Similarly if there is no user input (all the Web pages are static), then the POST method could be disallowed. So 405 errors can arise because the Web server is not configured to take data from the client at all. They can also arise if the client does not have sufficient authority to the particular URL resource identified on the request. (Last updated: March 2012).

Fixing 405 errors — general

405 errors often arise with the POST method. You may be trying to introduce some kind of input form on the Web site, but not all ISPs allow the POST method necessary to process the form.

All 405 errors can be traced to configuration of the Web server and security governing access to the content of the Web site, so should easily be explained by your ISP.

Fixing 405 errors — CheckUpDown

Our service monitors your site for HTTP errors like 405. This error should simply never occur on your CheckUpDown account. If it does, it typically indicates defective programming of our systems or of the Web server which manages the site. We use the GET method only, which all Web servers should allow (otherwise no-one would ever be able to see the Web site).

Please contact us (email preferred) whenever you encounter 405 errors — there is nothing you can do to sort them out. We then have to liaise with your ISP and the vendor of the Web server software to agree the exact reason for the error.

Most Common HTTP Errors

403 — Forbidden
404 — Not Found
500 — Internal Server Error
502 — Bad Gateway
503 — Service Unavailable

Other HTTP Errors

This link contains an overview and a list of other HTTP Errors

For quick access to other errors, use the links below:
300 Error Range: 300 301 302 303 304 305 306 307
400 Error Range: 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417
500 Error Range: 500 501 502 503 504 505

www.checkupdown.com

Как исправить ошибку 405?

Обычно, такая ситуация возникает по следующим причинам:

Вы импортируетеэкспортируете слишком большую базу данных через PHP-скрипт

Практически на каждом хостинге, существует ограничение по времени, на работу конкретного php-скрипта (обычно около 30 секунд). И по истечении этого времени, у вас появится сообщение об ошибке.

Как исправить? Здесь есть три варианта решения:

  1. Используйте для экспортаимпорта баз данных веб-интерфейс phpMyAdmin. Это наиболее популярный способ переноса БД, и том как правильно это сделать можно почитать в соответствующей статье.
  2. Другой вариант (если у вас получится) — разбейте ваш файл по частям, передача которых будет укладываться в отведенное время, и таким образом Вы избежите ошибки.
  3. создать Cron-задачу (ищите в панели управления хостинга раздел Cron и жмите «Создать задачу» или что-то подобное). В поле «Задача» вписывайте путь к вашему скрипту, который переносит данные. В таком случае лимит времени на его исполнение может вырасти до 300 секунд, и скорее всего Вам этого хватит для переноса БД. Но не у всех провайдеров это может сработать.

PHP-скрипт на вашем сайте пытается вызывать файлы с такими расширениями, которые должен обрабатывать Apache-сервер

Как исправить? Для начала по логам сервера (смотрите POST-запросы с ошибкой) нужно определить, что проблема заключается именно в этом. Если да, то найдите в панели управления хостингом раздел «Статические файлы» и удалите те расширения, которые мешают нормальной работе скрипта. Важно! Изменения могут вступить в силу в течении 1-2 часов.

Попытка доступа к файлам с помощью некорректного метода

Чаще всего так происходит когда идет попытка доступа к статическим файлам через POST.

Как исправить? Можно просто грубым образом вместо 405 ошибки, показывать, что все OK (ответ 200)

server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 405 =200 $uri;
# …
}

При работе через прокси, можно отправить запрос туда:

error_page 405 =200 @405;
location @405 {
root /htdocs;
proxy_pass http://localhost:8080;
}

Проблемы с FastCGI

Все тот же POST-запрос может вызывать проблем с модулем FastCGI и выдавать ошибку.

Как исправить?Отделяем от запроса УРЛ скрипта и его параметры:

location ~.php(.*) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include /etc/nginx/fastcgi_params;
}

ru.hostings.info

Server- or Client-Side?

All HTTP response status codes that are in the 4xx category are considered client error responses. This category contrasts with 5xx classification errors, such as the 503 Service Unavailable Error we explored a few months ago, which are considered server error responses. That said, the appearance of a 4xx error doesn’t necessarily mean the issue is on the client side, where the “client” is the web browser or device being used to access the application. Oftentimes, if you’re trying to diagnose an issue within your own application, you can immediately ignore most client-side code and components, such as HTML, cascading style sheets (CSS), client-side JavaScript, and so forth. This doesn’t apply solely to web sites, either. Many smart phone apps, which implement a modern looking user interface, are actually powered by a normal web application behind the scenes that is simply hidden from the user.

On the other hand, this doesn’t entirely rule out the server as the actual cause of a 405 Method Not Allowed. In some cases, the server may be misconfigured and handling requests improperly, which can result in 405 code responses and other problematic traffic routing issues. We’ll explore some of these scenarios (and potential solutions) down below, but be aware that, even though the 405 Method Not Allowed is considered a client error response, it doesn’t inherently mean we can rule out either the client nor the server as the culprit in this scenario. In these scenarios, the server is still the network object that is producing the 405 Method Not Allowed and returning it as the HTTP response code to the client, but it could be that the client is causing the issue in some way.

Start With a Thorough Application Backup

As with anything, it’s better to have played it safe at the start than to screw something up and come to regret it later on down the road. As such, it is critical that you perform a full backup of your application, database, and all other components of your website or application before attempting any fixes or changes to the system. Even better, if you have the capability, create a complete copy of the application and stick the copy on a secondary staging server that isn’t active or is inaccessible to the public. This will give you a clean testing ground with which to test all potential fixes to resolve the issue, without threatening the security or sanctity of your live application.

Diagnosing a 405 Method Not Allowed

As discussed in the introduction, a 405 Method Not Allowed indicates that the user agent (the web browser, in most cases) has requested a valid resource using an invalid HTTP method. This could happen in a few different circumstances:

  • The user agent is accidentally sending an incorrect HTTP method.
  • The server is expecting only a handful of valid HTTP methods for the requested resource.

There are currently 9 possible HTTP methods that can be used, though some of them are far more prevalent than others. For example, the GET method handles the vast majority of requests made on the Internet, as it is used solely to retrieve data (i.e. “get” a page or resource). The POST method is the second-most common, and it’s typically used to send data to the server (such as login credentials).

Since each of the possible HTTP methods have their own intended uses, it often doesn’t make sense for a server to accept requests using certain methods for particular resources. For example, a resource might exist at the URL https://airbrake.io/users/create, which is used by the server to create a new user when valid credentials are sent via a POST HTTP method request. Therefore, in such a scenario, it makes no sense for the server to accept a GET request at that resource/URL, so it may respond with a 405 Method Not Allowed code when such a request is made.

Troubleshooting on the Client-Side

Since the 405 Method Not Allowed is a client error response code, it’s best to start by troubleshooting any potential client-side issues that could be causing this error. Here are a handful of tips to try on the browser or device that is giving you problems.

Check the Requested URL

The most common cause of a 405 Method Not Allowed is simply inputting an incorrect URL. As discussed before, many web servers are tightly secured to disallow access to improper URLs that the server isn’t prepared to provide access to. This could be anything from trying to access a file directory via a URL to attempting to gain access to a private page meant for other users. Since 405 codes are not as common as 404 codes, the appearance of a 405 could means that the requested URL is valid, but is typically used for . Either way, it’s a good idea to double-check the exact URL that is returning the 405 Method Not Allowed error to make sure it is intended resource.

Debugging Common Platforms

If you’re running common software packages on the server that is responding with the 405 Method Not Allowed, you may want to start by looking into the stability and functionality of those platforms first. The most common content management systems — like WordPress, Joomla!, and Drupal — are all typically well-tested out of the box, but once you start making modifications to the underlying extensions or PHP code (the language in which nearly all modern content management systems are written in), it’s all too easy to cause an unforeseen issue that results in a 405 Method Not Allowed.

There are a few tips below aimed at helping you troubleshoot some of these popular software platforms.

Rollback Recent Upgrades

If you recently updated the content management system itself just before the 405 Method Not Allowed appeared, you may want to consider rolling back to the previous version you had installed when things were working fine. Similarly, any extensions or modules that you may have recently upgraded can also cause server-side issues, so reverting to previous versions of those may also help. For assistance with this task, simply Google “downgrade [PLATFORM_NAME]” and follow along. In some cases, however, certain CMSs don’t really provide a version downgrade capability, which indicates that they consider the base application, along with each new version released, to be extremely stable and bug-free. This is typically the case for the more popular platforms, so don’t be afraid if you can’t find an easy way to revert the platform to an older version.

Uninstall New Extensions, Modules, or Plugins

Depending on the particular content management system your application is using, the exact name of these components will be different, but they serve the same purpose across every system: improving the capabilities and features of the platform beyond what it’s normally capable of out of the box. But be warned: such extensions can, more or less, take full control of the system and make virtually any changes, whether it be to the PHP code, HTML, CSS, JavaScript, or database. As such, it may be wise to uninstall any new extensions that may have been recently added. Again, Google the extension name for the official documentation and assistance with this process.

Check for Unexpected Database Changes

It’s worth noting that, even if you uninstall an extension through the CMS dashboard, this doesn’t guarantee that changes made by the extension have been fully reverted. This is particularly true for many WordPress extensions, which are given carte blanche within the application, including full access rights to the database. Unless the extension author explicitly codes such things in, there are scenarios where an extension may modify database records that don’t “belong” to the extension itself, but are instead created and managed by other extensions (or even the base CMS itself). In those scenarios, the extension may not know how to revert alterations to database records, so it will ignore such things during uninstallation. Diagnosing such problems can be tricky, but I’ve personally encountered such scenarios multiple times, so your best course of action, assuming you’re reasonably convinced an extension is the likely culprit for the 405 Method Not Allowed, is to open the database and manually look through tables and records that were likely modified by the extension.

Above all, don’t be afraid to Google your issue. Try searching for specific terms related to your issue, such as the name of your application’s CMS, along with the 405 Method Not Allowed. Chances are you’ll find someone who has experienced the same issue.

Troubleshooting on the Server-Side

If you aren’t running a CMS application — or even if you are, but you’re confident the 405 Method Not Allowed isn’t related to that — here are some additional tips to help you troubleshoot what might be causing the issue on the server-side of things.

Confirm Your Server Configuration

Your application is likely running on a server that is using one of the two most popular web server softwares, Apache or nginx. At the time of publication, both of these web servers make up 84% of the world’s web server software! Thus, one of the first steps you can take to determine what might be causing these 405 Method Not Allowed response codes is to check the configuration files for your web server software for unintentional redirect or request handling instructions.

To determine which web server your application is using you’ll want to look for a key file. If your web server is Apache then look for an .htaccess file within the root directory of your website file system. For example, if your application is on a shared host you’ll likely have a username associated with the hosting account. In such a case, the application root directory is typically found at the path of /home/<username>/public_html/, so the .htaccess file would be at /home/<username>/public_html/.htaccess.

If you located the .htaccess file then open it in a text editor and look for lines that use RewriteXXX directives, which are part of the mod_rewrite module in Apache. Covering exactly how these rules work is well beyond the scope of this article, however, the basic concept is that a RewriteCond directive defines a text-based pattern that will be matched against entered URLs. If a matching URL is requested by a visitor to the site, the RewriteRule directive that follows one or more RewriteCond directives is used to perform the actual redirection of the request to the appropriate URL.

For example, here is a simple RewriteRule that matches all incoming GET requests to https://airbrake.io/users/create and responds with a 405 Method Not Allowed error code:

RewriteEngine on RewriteCond %{REQUEST_URI} ^/users/create/?.*$ RewriteCond %{REQUEST_METHOD} =GET RewriteRule ^(.*)$ http://airbrake.io/users/new$1 [R=405,L] 

Notice the R=405 flag at the end of the RewriteRule, which explicitly states that the response code should be 405, indicating to user agents that the resource exists, but the provided HTTP method is not allowed. Thus, if you find any strange RewriteCond or RewriteRule directives in the .htaccess file that don’t seem to belong, try temporarily commenting them out (using the # character prefix) and restarting your web server to see if this resolves the issue.

On the other hand, if your server is running on nginx, you’ll need to look for a completely different configuration file. By default this file is named nginx.conf and is located in one of a few common directories: /usr/local/nginx/conf, /etc/nginx, or /usr/local/etc/nginx. Once located, open nginx.conf in a text editor and look for directives that are using the 405 response code flag. For example, here is a simple block directive (i.e. a named set of directives) that configures a virtual server for airbrake.io and ensures that a POST request to https://airbrake.io/users/create fails and is responded with a 405 response code:

server {   listen 80;  listen 443 ssl;   server_name airbrake.io;   location /users/create {  if ($request_method = POST) {  return 405 https://airbrake.io/users/create$request_uri;  }  } } 

Have a look through your nginx.conf file for any abnormal directives or lines that include the 405 flag. Comment out any abnormalities before restarting the server to see if the issue was resolved.

Configuration options for each different type of web server can vary dramatically, so we’ll just list a few popular ones to give you some resources to look through, depending on what type of server your application is running on:

  • Apache
  • Nginx
  • IIS
  • Node.js
  • Apache Tomcat

Look Through the Logs

Nearly every web application will keep some form of server-side logs. Application logs are typically the history of what the application did, such as which pages were requested, which servers it connected to, which database results it provides, and so forth. Server logs are related to the actual hardware that is running the application, and will often provide details about the health and status of all connected services, or even just the server itself. Google “logs [PLATFORM_NAME]” if you’re using a CMS, or “logs [PROGRAMMING_LANGUAGE]” and “logs [OPERATING_SYSTEM]” if you’re running a custom application, to get more information on finding the logs in question.

Debug Your Application Code or Scripts

If all else fails, it may be that a problem in some custom code within your application is causing the issue. Try to diagnose where the issue may be coming from through manually debugging your application, along with parsing through application and server logs. Ideally, make a copy of the entire application to a local development machine and perform a step-by-step debug process, which will allow you to recreate the exact scenario in which the 405 Method Not Allowed occurred and view the application code at the moment something goes wrong.

No matter the cause — and even if you managed to fix it this time — the appearance of an issue like the 405 Method Not Allowed within your own application is a good indication you may want to implement an error management tool, which will help you automatically detect errors and will alert you the very moment they occur. Airbrake’s error monitoring software provides real-time error monitoring and automatic exception reporting for all your development projects. Airbrake’s state of the art web dashboard ensures you receive round-the-clock status updates on your application’s health and error rates. No matter what you’re working on, Airbrake easily integrates with all the most popular languages and frameworks. Plus, Airbrake makes it easy to customize exception parameters, while giving you complete control of the active error filter system, so you only gather the errors that matter most.

Check out Airbrake’s error monitoring software today and see for yourself why so many of the world’s best engineering teams use Airbrake to revolutionize their exception handling practices!

airbrake.io


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Adblock
detector