Как исправить ошибку 405 Method Not Allowed: причины и решения - VICTORY group

Как исправить ошибку 405 Method Not Allowed: причины и решения

Время чтения: 5 мин.
Просмотров: 43
Дата публикации: 14.07.2026
Дата обновления: 06.07.2026
Навигация
Как исправить ошибку 405 Method Not Allowed: причины и решения

Код 405 Method Not Allowed означает: сервер принял запрос, нашел ресурс по указанному URL, но отклонил его — использованный HTTP-метод не разрешен для этого адреса. Это может проявляться в браузере при отправке формы или переходе по ссылке, в ответе API (request failed with status code 405) или в логах веб-сервера (405 not allowed nginx).

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

Почему сайт выдает ошибку 405: основные причины

Ошибка 405 может возникать по разным причинам — от неверного метода в запросе до жестких настроек безопасности. Вот основные:

  1. Неверный HTTP-метод в запросе. Клиент отправляет GET вместо POST, POST вместо GET, PUT вместо PATCH и так далее. Особенно часто это встречается при работе с формами (браузер отправляет POST, а сервер ожидает GET) или с API (разработчик перепутал метод в документации).
  2. Сервер может блокировать определенные HTTP-методы. В Nginx методы ограничивают директивой limit_except, в Apache — Limit и LimitExcept. Но важно различать код: если метод блокируется запретом доступа (deny all), сервер вернёт 403, а не 405. Именно 405 возникает, когда метод не поддерживается для ресурса по-другому — например, при POST к статическому файлу или при явном правиле return 405. В Apache аналогичную роль играют директивы Limit и LimitExcept: если нужный метод не входит в разрешенный список, сервер возвращает 405.
  3. Приложение не реализовало обработчик. Роут (URL) существует, но в коде нет обработчика для того HTTP-метода, который использует клиент. Например, есть GET /api/user, но нет POST /api/user. Запрос доходит до приложения, но фреймворк не в состоянии обработать его и возвращает 405.
  4. Фильтр методов CDN или прокси. Cloudflare, Sucuri и другие сервисы могут блокировать нестандартные методы — PUT, DELETE, PATCH — на уровне правил WAF или настроек безопасности. Если метод заблокирован, прокси вернёт ошибку, даже не передав запрос на ваш сервер.
  5. Плагины безопасности WordPress. Плагины вроде Wordfence, iThemes Security, All In One WP Security блокируют запросы с нестандартными методами, считая их признаком атаки.
  6. Nginx и статические файлы. Nginx не поддерживает POST-запросы к статическим файлам (.html, .jpg, .css). Если POST отправляется на такой файл, Nginx сразу возвращает 405, не передавая запрос дальше.

Как убрать ошибку 405 в браузере: шаги для пользователя

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

  • Обновить страницу (F5 или Ctrl+F5) — возможно, сервер временно выдает ошибку.
  • Очистить кэш браузера и cookies — иногда проблема связана с сохраненными данными.
  • Открыть страницу в режиме инкогнито — это исключает влияние расширений и сохраненных сессий.
  • Попробовать другой браузер, чтобы убедиться, что проблема не в конкретном браузере.

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

Отдельная ситуация — ошибка 405 в ОФД (операторе фискальных данных). Она возникает, когда клиентское ПО отправляет запрос неверным HTTP-методом на сервер ОФД. Пользователь не может исправить это самостоятельно: нужно обновить ПО кассы или обратиться в техподдержку ОФД.

Не только 405: проверьте, какие ещё коды отдаёт сайт

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

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

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

Проблема 1: POST на статический файл.

Nginx по умолчанию не обрабатывает POST-запросы к статическим файлам и возвращает 405. Решение: убедиться, что запрос идет к динамическому обработчику (php-fpm, proxy_pass, uwsgi), а не напрямую к файлу. Если статический файл должен принимать POST — это архитектурная ошибка, нужно перенаправить запрос на обработчик.

Проблема 2: директива limit_except.

В конфиге Nginx может быть блок location с директивой limit_except, которая ограничивает разрешенные методы. Например:

nginx
location /api/ {
limit_except GET HEAD {
deny all;
}
}

В этом примере разрешены только GET и HEAD, остальные методы блокируются. Но учтите: из-за deny all такой блок возвращает 403 Forbidden, а не 405. Если сервер отдаёт именно 405 — метод отклоняется иначе (POST к статике или явное return 405). Решение: добавить нужные методы в исключение limit_except, а если стоит явный return 405 — скорректировать это правило.

Проблема 3: proxy_pass и upstream.

Если Nginx проксирует запросы на бэкенд (например, на приложение на Python, Node.js или на другой сервер), убедитесь, что:

  • бэкенд действительно принимает нужный метод;
  • Nginx не переписывает метод (директивы proxy_method);
  • в настройках прокси нет блокировок по методам.

После любых изменений конфига обязательно проверить синтаксис командой nginx -t и перезагрузить сервер: nginx -s reload или systemctl reload nginx.

Как исправить 405 Method Not Allowed в API и коде приложения

Если ошибка 405 появляется в API или коде приложения, нужна комплексная диагностика. Ниже — пошаговая инструкция.

Шаг 1: Проверить заголовок Allow. Сервер с ошибкой 405 обязан вернуть заголовок Allow со списком методов, разрешенных для данного URL. Посмотреть его можно в инструментах разработчика (вкладка Network → ответ → заголовки) или через команду:

bash
curl -I https://example.com/api/endpoint
Если Allow: GET, HEAD — а вы отправляете POST, проблема в выборе метода.

Шаг 2: Убедиться, что клиент использует нужный метод. Сверьте метод с документацией API или с роутами приложения. Возможно, эндпоинт ожидает GET, а клиент шлет POST, или наоборот.

Шаг 3: Добавить обработчик в коде. Если сервер обратно выдает 405, хотя код правильный, — значит в приложении не зарегистрирован обработчик для этого метода. Во фреймворках (Django, Laravel, Express, Spring) следует явно указать, какие методы поддерживает роут. Например, в Express:

javascript
app.post(‘/api/user’, handler);  // POST разрешен
app.get(‘/api/user’, handler);  // GET разрешен
Если отсутствует app.post, запрос POST вернет 405.

Шаг 4: Проверить промежуточные слои. CDN (Cloudflare, Fastly), прокси-серверы, балансировщики нагрузки, WAF (Web Application Firewall) могут блокировать некоторые методы. Проверьте настройки: если метод PUT или DELETE заблокирован на уровне прокси, запрос не дойдет до вашего сервера.

Шаг 5: Для WordPress — проверить плагины безопасности. Wordfence, iThemes Security и другие плагины могут препятствовать запросам с нестандартными методами. Временно деактивируйте плагины и проверьте, исчезла ли ошибка. Если пропала — настройте исключения для нужных методов в плагине безопасности.

Приведем клиентов
Заполните форму, и мы свяжемся
с вами для консультации.
FAQ

Часто задаваемые
вопросы по агентству

Ответили на самые популярные вопросы, которые
помогают лучше понять наш подход, процессы и ценности
Ошибка 405 проявляется только у части пользователей
Такое может происходить из-за нескольких факторов: часть запросов блокируется CDN либо WAF по IP или заголовкам; плагины безопасности WordPress ограничивают определенные паттерны запросов; A/B-тесты или геотаргетинг направляют пользователей на сервер с другой конфигурацией. Для точной диагностики стоит проверить логи сервера и настройки CDN — там будет видно, какие запросы отклоняются и почему.
Может ли ошибка 405 появиться после переноса сайта или смены хостинга?
Да, частый случай. На новом сервере может быть другая конфигурация: иные настройки методов, другой веб-сервер (Nginx вместо Apache) или иначе настроенный обработчик. Если 405 появился сразу после переезда — сравните настройки методов и обработки запросов на старом и новом сервере.
Как проверить, какой метод на самом деле отправляет клиент?
В браузере: DevTools → вкладка Network → клик по запросу → поле Request Method покажет реальный метод. Для API удобны Postman или curl с явным указанием метода. Так видно, совпадает ли отправляемый метод с тем, что ожидает сервер (см. заголовок Allow).
Теряются ли данные, если форма вернула ошибку 405?
Нет. Код 405 означает, что сервер отклонил запрос и не выполнил действие — данные не сохранились и не обработались. Достаточно повторить отправку после устранения причины (обычно на стороне сайта); дублирования бояться не нужно.
Не нашли ответ на свой вопрос?
Оставьте заявку или свяжитесь любым удобным способом — мы всегда на связи и готовы помочь
начнём прямо сейчас

Конкуренты не спят,
пора действовать