Руководства и туториалы

Ошибка 405 Method Not Allowed: что означает и как исправить

Поделиться:

HTTP-коды ошибок одновременно полезны и раздражают. Страница с ошибкой ясно даёт понять, что что-то пошло не так, но большинство из нас понятия не имеет, что на самом деле означает «405 Method Not Allowed», не говоря уже о том, как это исправить.

Вот краткая версия: запрашиваемая страница существует, но сервер отказал в способе её запроса. И решение обычно находится в пределах досягаемости — независимо от того, являетесь ли вы посетителем, который просто хочет, чтобы страница загрузилась, или владельцем сайта, чьи посетители постоянно сообщают об ошибке.

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

Что означает ошибка HTTP 405 Method Not Allowed?

HTTP 405 Method Not Allowed — это код состояния клиентской ошибки, означающий, что сервер распознал ваш метод запроса — например, GET или POST — но запрошенный URL его не поддерживает. В отличие от 404, страница существует; просто к ней нельзя получить доступ тем способом, которым она была запрошена.

Каждый раз, когда ваш браузер общается с веб-сервером, он использует метод HTTP (иногда называемый глаголом), чтобы сообщить, что ему нужно: GET для получения страницы, POST для отправки данных формы, PUT или DELETE для изменения чего-либо через API и так далее. Согласно текущей спецификации HTTP (RFC 9110), сервер, отвечающий кодом 405, также должен отправлять заголовок Allow со списком методов, которые этот URL поддерживает. Не все серверы соблюдают это — nginx часто опускает его в своих 405 для статических файлов — но когда заголовок присутствует, это делает данную ошибку необычно лёгкой для диагностики, как мы увидим ниже.

Глоссарий DreamHost

Сервер

Сервер — это компьютер, который хранит данные. Веб-сервер — это тип сервера, который хранит веб-страницы и доставляет их пользователям. Веб-серверы подключены к Интернету и используют HTTP для отправки веб-страниц пользователям, которые их запрашивают.

Читать далее
HTTP 405 Method Not Allowed Error: What It Means And How To Fix It

Постоянный статус-код 405 является проблемой для любого, кто управляет веб-сайтом: пока вы его не исправите, посетители не смогут открыть затронутую страницу или выполнить затронутое действие. В зависимости от программного обеспечения сервера ошибка может отображаться как:

  • 405 Method Not Allowed
  • 405 Not Allowed (формулировка nginx)
  • Method Not Allowed
  • HTTP 405 Error / HTTP ERROR 405 (экран Chrome «This page isn’t working»)
  • HTTP Error 405 – Method Not Allowed
  • 405 – HTTP verb used to access this page is not allowed (серверы Microsoft IIS)

Разные обёртки, одна и та же ошибка: сервер знает метод, но ресурс его не принимает.

Что вызывает ошибку 405?

Всякий раз, когда вы посещаете веб-страницу, ваш браузер отправляет хостинг-серверу запрос, и весь этот диалог регулируется протоколом HTTP — Hypertext Transfer Protocol, — который использует коды состояния для отчёта о ходе выполнения и проблемах. Коды в диапазоне 400 сообщают об ошибках клиента: что-то в самом запросе, что сервер не принял.

HTTP 405 Method Not Allowed Error: What It Means And How To Fix It

Код 405 конкретно означает, что проблема была в методе запроса. На практике это сводится к нескольким причинам:

  • Форма или скрипт отправляют неправильный метод: Классический случай — форма, которая отправляет POST на страницу, принимающую только GET. Например, контактная форма, указывающая на статическую страницу вместо её обработчика. nginx, в частности, отклоняет POST, отправленный на статический файл, своей страницей «405 Not Allowed».
  • Перенаправление незаметно меняет метод: Когда POST попадает на перенаправление 301 или 302 (скажем, с http на https или с non-www на www), браузеры обычно воспроизводят его как обычный GET — и конечный пункт может его не принять. Коды перенаправления, сохраняющие метод, — это 307 и 308. Эта проблема часто встречается у форм, которые отправляются на URL, находящийся на одно перенаправление дальше от конечного адреса.
  • Конфигурация сервера блокирует методы: Правила в .htaccess Apache или конфигурации nginx могут ограничивать, какие методы принимает URL — намеренно (для безопасности) или случайно (неправильно настроенное перенаправление).
  • Недавние обновления или новые плагины, темы и модули: Изменения в CMS, теме или плагине могут изменить маршруты и конечные точки или оставить после себя изменения в базе данных, нарушающие обработку запросов.
  • Несоответствие методов API: Вызов конечной точки API с методом, который она не поддерживает (PUT там, где определён только POST, или предварительный запрос OPTIONS, который сервер отклоняет), возвращает 405 непосредственно от сервера API.
  • Неверно настроенный DNS: Если записи вашего домена указывают на неправильный сервер — настроенный на другие правила, чем ожидает ваш веб-сайт, — запросы могут попадать туда, где их методы не разрешены.

В чём разница между ошибками 404 и 405?

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

HTTP 405 Method Not Allowed Error: What It Means And How To Fix It

Код ошибки 404 появляется, когда по URL нет контента — страницы удаляются, домены меняются, ссылки «гниют». Напротив, код 405 означает, что контент существует, но запрос использовал метод, который этот URL не принимает.

Ещё один «родственник», который стоит знать: 403 Forbidden означает, что сервер отказывается авторизовать запрос, независимо от метода.

Получайте контент прямо на почту

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

Как диагностировать ошибку 405

Прежде чем что-либо менять, потратьте две минуты на выяснение того, какой запрос отклоняется и что на самом деле разрешает URL. Ошибка 405 даёт больше подсказок, чем большинство других:

1. Прочитайте формулировку страницы ошибки. Точная формулировка сужает круг поиска программного обеспечения сервера: «405 Not Allowed» — это nginx, «405 – HTTP verb used to access this page is not allowed» — это Microsoft IIS, а общий экран Chrome «This page isn’t working / HTTP ERROR 405» означает, что сервер не отправил собственную страницу ошибки.

2. Спросите сервер, какие методы принимает URL. Если вы умеете пользоваться терминалом, отправьте тестовый запрос с помощью curl и прочитайте заголовки ответа:

curl -i -X POST https://example.com/some-page/

HTTP/1.1 405 Method Not Allowed
Allow: GET, HEAD

Когда заголовок Allow присутствует, сервер письменно сообщает вам, какие методы поддерживает URL (nginx в своих 405 для статических файлов часто его опускает). Если в нём указан GET, а ваша форма отправляет POST, вы нашли несоответствие.

3. Проверьте, что на самом деле отправил ваш браузер. Откройте инструменты разработчика вашего браузера (F12 в Chrome), выберите вкладку Network и повторите действие, которое вызывает ошибку. Нажмите на красный неудачный запрос и посмотрите его метод, а также то, следовал ли он сначала за перенаправлением. POST, который превращается в GET после перенаправления, является признаком описанной выше причины с перенаправлением.

Как исправить ошибку 405 Method Not Allowed

Просто посещаете сайт, который выдаёт эту ошибку? Попробуйте перезагрузить страницу из адресной строки (ввод URL и нажатие Enter отправляет новый GET-запрос) или перейдите на страницу снова с главной страницы сайта. Если ошибка возникает только при отправке формы, проблема почти наверняка на стороне сайта — приведённые ниже исправления предназначены для его владельца.

Управляете сайтом самостоятельно? Код состояния не говорит точно, что не так, поэтому последовательно выполните следующий контрольный список. Он упорядочен от самых быстрых и безопасных проверок до восстановления в крайнем случае.

По соображениям безопасности веб-серверы принимают только определённые типы запросов для каждого URL. Если посетители постоянно сталкиваются с ошибками 405, возможно, они переходят по неработающей ссылке — или отправляют форму, атрибут action которой указывает на неправильный адрес (статическую страницу, старый URL или адрес, который перенаправляет до того, как попасть куда нужно).

Просканируйте свой сайт с помощью Dead Link Checker или аналогичного бесплатного инструмента и убедитесь, что ваши ссылки в социальных сетях и целевые страницы не указывают на частные или удалённые страницы. Затем проверьте каждую форму: её URL в action должен быть конечным адресом, без перенаправлений между посетителем и обработчиком.

HTTP 405 Method Not Allowed Error: What It Means And How To Fix It

2) Проверьте ваши редиректы и правила перезаписи

Как мы уже рассказывали выше, серверы отклоняют запросы по своей конструкции — если бы они не блокировали определенные методы, ваш сайт мог бы легко быть перегружен нежелательным вниманием. Но как слишком агрессивный вышибала клуба, неправильно настроенный сервер иногда блокирует не те запросы.

Две вещи, которые стоит проверить в вашей конфигурации сервера:

Редиректы, которые «проглатывают» POST-запросы. Направляйте формы и API-вызовы на конечный URL (правильный протокол, правильное имя хоста) и используйте сохраняющие метод коды 307/308 везде, где редирект неизбежен — в разделе о причинах выше объясняется, как 301 или 302 незаметно преобразуют POST. Наше руководство по редиректам описывает различия.

Правила перезаписи, которые напрямую возвращают 405. Мы по умолчанию используем Apache в DreamHost, поэтому вам нужно искать .htaccess файл в корневом каталоге вашего сайта (на тарифах VPS вы можете переключиться на nginx, чьи правила находятся в конфигурации nginx). Откройте файл и найдите директивы Rewrite — они принадлежат модулю mod_rewrite Apache. Правило, подобное этому, намеренно отвечает на соответствующий запрос кодом 405:

RewriteRule ^api/ - [R=405,L]
HTTP 405 Method Not Allowed Error: What It Means And How To Fix It

Если такое правило перехватывает больше трафика, чем предполагалось, закомментируйте его, добавив # в начале строки, сохраните и протестируйте снова. Меняйте по одному правилу за раз, чтобы точно знать, какая строка была проблемой — и сопротивляйтесь искушению отключить весь движок перезаписи, поскольку постоянные ссылки WordPress зависят от него.

3) Читайте журналы на стороне сервера

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

Файлы, которые вы ищете, это error.log и access.log. В DreamHost вы можете просмотреть их через SFTP (Secure File Transfer Protocol): в вашем FTP-клиенте откройте каталог /logs в вашей папке пользователя, выберите сайт, который хотите проверить, откройте самый последний каталог, начинающийся с http, и прочитайте файл журнала внутри любым текстовым редактором.

HTTP 405 Method Not Allowed Error: What It Means And How To Fix It

В access.log найдите запросы, которые вернули 405, и запишите метод и URL для каждого; это сочетание точно подскажет, какое правило или конечную точку проверять следующим.

4) Проверьте свои обновления

Вы недавно обновляли свою систему управления контентом, тему или плагин? Возможно, именно поэтому вы внезапно видите сообщения 405 Method Not Allowed.

Обновления необходимы для поддержания хорошей безопасности веб-сайта, исправления ошибок и открытия новых функций. Но иногда свежее обновление приносит новые проблемы.

Если вы не уверены, обновлялось ли что-то недавно, войдите в админку WordPress и откройте Консоль > Обновления. Вы увидите, когда WordPress последний раз проверял обновления, и при необходимости можете проверить вручную.

Если обновление действительно сломало ваш сайт, откатитесь до предыдущей версии системы, темы или плагина, вызывающего проблемы. Пользователи WordPress могут откатить ядро с помощью поддерживаемого сообществом плагина WP Downgrade — его собственные обновления были редкими, поэтому перед использованием убедитесь, что он совместим с вашей версией WordPress.

HTTP 405 Method Not Allowed Error: What It Means And How To Fix It

Как откатить плагины и темы WordPress

Если вы считаете, что виновата конкретная тема или плагин, мы рекомендуем плагин WP Rollback. После активации он позволяет откатить любой плагин или тему, установленные из каталога WordPress.org.

Откройте Плагины > Установленные плагины или Внешний вид > Темы в админке WordPress, и вы увидите опцию «Rollback» для каждого. Нажмите на нее, выберите версию, которую хотите восстановить, и после завершения отката убедитесь, что плагин или тема снова активированы.

HTTP 405 Method Not Allowed Error: What It Means And How To Fix It

5) Удалите новые плагины, модули и темы

Как обновления существующих плагинов и тем могут всё испортить, так и совершенно новые дополнения — особенно то, что влияет на запросы, например плагин безопасности, брандмауэра, кэширования или редиректов.

Если 405-е ошибки начались сразу после установки чего-то нового, деактивируйте это. В WordPress перейдите в Плагины или Внешний вид > Темы в области администрирования и нажмите Деактивировать на новом элементе.

Не уверены, какой плагин вызывает проблему? Вы можете отключить их все сразу через FTP или SSH:

  1. В вашем FTP/SSH клиенте перейдите в каталог вашего сайта WordPress.
  2. Перейдите в wp-content и щелкните правой кнопкой мыши по папке plugins.
  3. Выберите Переименовать.
  4. Измените имя папки на plugins_OFF.

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

Чтобы удалить тему через FTP/SSH, откройте wp-content/themes и удалите (или переименуйте) папку темы — но сохраните резервную копию на случай, если тема не виновата.

6) Исправьте права доступа к файлам

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

Самый быстрый способ проверить — через файловый менеджер вашего хостинга или FTP-клиент: щелкните правой кнопкой мыши по файлу и откройте его права доступа (часто обозначается как CHMOD или «атрибуты файла»). Вы можете обнаружить, что важный файл потерял публичный доступ на чтение.

HTTP 405 Method Not Allowed Error: What It Means And How To Fix It

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

7) Отладьте свой код

В конечном счете, причина ошибок 405 может быть в коде вашего сайта или веб-приложения — маршрут, объявляющий неправильный метод, обработчик вебхука, который никогда не был зарегистрирован, AJAX-запрос POST к неправильной конечной точке.

Чтобы диагностировать такие проблемы, следуйте полному процессу отладки: создайте полную локальную копию вашего сайта (или используйте промежуточную среду), воспроизведите ошибку и отследите неудачный запрос. Точный процесс зависит от вашей CMS, скриптов и языков. Если ваш сайт работает на WordPress и вы уверенно пользуетесь командной строкой, WP-CLI — отличный инструмент для этой задачи.

8) Восстановите базу данных

Плагины и темы обычно нуждаются в хотя бы некотором доступе к вашей базе данных, чтобы выполнять свои функции. Иногда они становятся немного непослушными и изменяют части базы данных, которые их не касаются — и эти изменения сохраняются даже после удаления проблемного плагина или темы.

Глоссарий DreamHost

База данных

База данных — это набор информации, доступной для компьютеров. Базы данных используются для хранения такой информации, как записи клиентов, каталоги продуктов и финансовые транзакции.

Читать далее

Есть два выхода: покопаться в журналах базы данных в поисках проблемного изменения (вы ищете операторы INSERT, UPDATE или DELETE примерно в то время, когда начались ошибки — задача для того, кто умеет читать SQL), или просто восстановить базу данных до версии, которая была до начала проблем.

HTTP 405 Method Not Allowed Error: What It Means And How To Fix It

DreamHost автоматически создает резервную копию вашей базы данных ежедневно; руководство по восстановлению описывает процесс восстановления из панели. Если вы не уверены, что видите в журналах, избегайте внесения изменений и обратитесь к специалисту.

9) Перепроверьте ваши A-записи

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

В некоторых случаях вы можете увидеть ошибки 405, если ваши A-записи указывают на неверный сервер. Например, сервер, настроенный для хостинга вашего сайта, может иметь другие правила методов, чем сервер, настроенный для размещения API (интерфейса прикладного программирования). Проверьте ваши DNS-записи там, где вы управляете доменом, и подтвердите, что каждая A-запись указывает на ожидаемый сервер.

HTTP 405 Method Not Allowed Error: What It Means And How To Fix It

10) Восстановите весь ваш сайт

Иногда самое быстрое исправление — прекратить отладку и откатиться.

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

Кто бы ни хостил ваш сайт, мы всегда рекомендуем делать регулярные резервные копии и хранить копию офлайн. DreamHost также хранит ежедневные автоматические резервные копии размещенных сайтов, так что вы можете откатиться до вчерашней версии вашего сайта из панели — руководство по резервному копированию и восстановлению описывает текущий процесс как для обычного хостинга, так и для DreamPress.

Глоссарий DreamHost

Облачный хостинг

Традиционный веб-хостинг размещает сайт на физическом сервере. С другой стороны, «облачный хостинг» использует несколько виртуальных (удаленных) серверов для той же задачи.

Читать далее
HTTP 405 Method Not Allowed Error: What It Means And How To Fix It

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

Бонус: прекратите ошибки 405 в ваших API-вызовах

Если ваш сайт полагается на соединение с внешним API, ошибка 405 обычно означает, что сервер API отклонил метод вашего запроса. Три вещи для проверки:

  • Сам метод: Проверьте документацию API для конечной точки — отправка PUT туда, где определен только POST, приводит к ошибке 405, а заголовок Allow в ответе (когда сервер его включает) сообщает вам, что именно принимает конечная точка.
  • Ваши заголовки: Несоответствующие заголовки проявляются как соседние ошибки, а не как 405 — Content-Type, который конечная точка не может разобрать, возвращает 415, неудовлетворимый Accept возвращает 406. Поддержание их в порядке (application/json для полезной нагрузки JSON, application/x-www-form-urlencoded для классических отправок форм, плюс заголовок Accept для формата, который вы ожидаете получить) быстро исключает эти похожие ошибки.
  • Предварительные запросы: Вызовы API из браузера часто сначала отправляют запрос OPTIONS (предварительный запрос CORS). Если сервер не принимает OPTIONS, реальный запрос никогда не отправляется — поэтому убедитесь, что конечная точка также отвечает на OPTIONS.

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

Как предотвратить возвращение ошибки 405

Проработка всех вышеперечисленных шагов — непростая задача. Но если вы готовы приложить усилия, вы сможете избавиться от ошибок 405, появляющихся на вашем сайте или в приложении. Чтобы избежать повторения всего этого снова:

  • Тестируйте свой сайт после каждого изменения – Всякий раз, когда вы устанавливаете новые плагины или темы или изменяете правила перенаправления, отправляйте свои формы и проверяйте ключевые страницы. Если изменение вызовет ошибки 405, хорошо знать это заранее!
  • Делайте перенаправления безопасными для методов – Направляйте формы и вызовы API на конечные URL-адреса и используйте 307/308 вместо 301/302 везде, где POST может пересечься с перенаправлением.
  • Помогите пользователям в устранении неполадок – Если ошибка 405 все же проскальзывает, настраиваемая страница ошибки, которая говорит, что попробовать (перезагрузить из адресной строки, вернуться на главную страницу), превращает тупик в объезд.

HTTP 405 Ошибка: Часто задаваемые вопросы

Что означает HTTP 405 Method Not Allowed?

Это означает, что сервер распознал метод вашего запроса (GET, POST, PUT и так далее), но запрошенный вами URL его не поддерживает. Страница существует — просто запрос должен поступить тем методом, который этот URL принимает.

Является ли ошибка 405 моей виной как посетителя?

Почти никогда. Несоответствие кроется в ссылках сайта, формах, перенаправлениях или серверных правилах. Как посетитель, вы можете заново ввести URL в адресной строке (что отправляет новый GET) или перейти с главной страницы. Если ошибка сохраняется, исправить ее может только владелец сайта.

В чем разница между ошибками 404, 403 и 405?

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

Почему nginx показывает «405 Not Allowed»?

«405 Not Allowed» — это формулировка nginx для этой ошибки, и классический триггер — POST, отправленный на статический файл — nginx не принимает отправку форм на простые HTML-страницы. Направьте action формы на реальный обработчик (скрипт или конечную точку формы) вместо статической страницы.

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

Проверьте URL action формы: он должен указывать на точный, конечный адрес обработчика, с правильным протоколом (https) и именем хоста (с www или без), чтобы никакое перенаправление не преобразовало POST в GET по пути. Затем подтвердите, что обработчик действительно принимает POST.

HTTP 405 Ошибка: Подведение итогов

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

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

HTTP 405 Method Not Allowed Error: What It Means And How To Fix It

Хостинг, который вас поддерживает

Каждый тариф веб-хостинга DreamHost включает ежедневные автоматические резервные копии, безлимитный трафик и круглосуточную поддержку — так что следующая серверная загадка будет нашей, а не вашей.

Изучите тарифы веб-хостинга