Monitor404

Ошибка 405 Method Not Allowed: метод не разрешён

Ошибка 405 Method Not Allowed означает, что адрес существует, но не принимает метод, которым к нему обратились: например, на странице, рассчитанной на GET, отправили POST. Помогает отправка запроса на правильный URL или правильным методом.

Обновлено 11 октября 2026 г.

Что значит ошибка 405

RFC 9110 (раздел 15.5.6): метод из строки запроса известен серверу, но не поддерживается целевым ресурсом. Сервер обязан прислать заголовок Allow со списком разрешённых методов. Отличие от 404: ресурс найден, дело в методе. Отличие от 403: причина не в правах, а в том, что ресурс просто не работает с таким методом.

http
POST /contact.html HTTP/1.1

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

Причины 405

  • Форма отправляется на статическую страницу. Атрибут action указывает на .html-файл или неверный адрес: nginx не принимает POST к статическим файлам и отвечает 405.
  • Редирект превратил POST в GET. Запрос прошёл через 301 или 302, клиент заменил метод, а новый адрес принимает только POST. Для таких случаев есть 307 и 308.
  • Неверный адрес API или версия. Маршрут есть, но для другого метода.
  • Предзапрос CORS. Браузер шлёт OPTIONS, сервер не умеет на него отвечать.
  • Запрет методов в конфигурации (nginx, Apache, WAF, прокси) или обработчик приложения не зарегистрирован на метод.
  • HEAD-запросы: проверки доступности и некоторые роботы шлют HEAD, а приложение его не поддерживает.

Что делать посетителю

  1. Обновите страницу и повторите действие: возможно, форма устарела.
  2. Вернитесь на страницу с формой и отправьте её заново, не обновляя страницу ответа.
  3. Очистите cookie и кеш сайта и отключите расширения.
  4. Если ошибка повторяется, сообщите владельцу сайта, какую форму или кнопку вы использовали.

Что делать владельцу и разработчику

Проверьте метод и адрес в запросе

Посмотрите в DevTools (вкладка Network) на запрос, вызвавший ошибку: метод, адрес, итоговый URL после редиректов. Сверьте с серверной частью: какой URL, какой метод она ждёт. Заголовок Allow в ответе подскажет, что разрешено.

Ограничьте методы осознанно

nginx: отвечать 405 на лишние методы
location /api/ {
    if ($request_method !~ ^(GET|HEAD|POST|OPTIONS)$) {
        add_header Allow "GET, HEAD, POST, OPTIONS" always;
        return 405;
    }
    proxy_pass http://127.0.0.1:3000;
}
Apache: запретить всё кроме GET, HEAD и POST (отвечает 403, а не 405)
<LimitExcept GET HEAD POST>
    Require all denied
</LimitExcept>

Заметьте: в Apache директивы Limit и LimitExcept отвечают 403, а не 405. Если нужен именно 405 с Allow, формируйте его на уровне приложения.

Отдавайте правильный 405 в приложении

Express
app.all("/api/subscribe", (req, res, next) => {
  if (req.method === "POST") return next();
  res.set("Allow", "POST").status(405).json({ error: "method_not_allowed" });
});

CORS и OPTIONS

Если кросс-доменный запрос из браузера падает с 405, проверьте, что сервер отвечает на предзапрос OPTIONS (статус 204 или 200) и присылает заголовки Access-Control-Allow-Methods и Access-Control-Allow-Headers.

405, 501 и 404: как не перепутать

КодКогда отвечает
405 Method Not Allowedметод известен серверу, но этот ресурс его не поддерживает; обязателен заголовок Allow
501 Not Implementedсервер вообще не умеет такой метод и не поддерживает его ни для одного ресурса
404 Not Foundресурса по этому адресу нет, и метод не важен
403 Forbiddenметод допустим, но доступ запрещён политикой

Обычные сценарии на сайтах: форма на статическом сайте (Tilda, хостинг статики) отправляется на адрес без обработчика; в WordPress запрос к wp-json блокирует защитный плагин; в REST API клиент использует PUT там, где разрешён только PATCH. Во всех случаях начинайте с заголовка Allow: он показывает, какие методы адрес принимает.

Влияние на SEO

Роботы Яндекса и Google получают страницы запросом GET, поэтому нормальные страницы 405 не отдают. Проблемы возникают, когда сервер или защитное ПО по ошибке закрывает GET или HEAD: тогда страницы остаются без индекса, как и при других ошибках 4xx. Для сайтов, где отдельные проверки или мониторинги присылают HEAD, настройте поддержку HEAD: иначе вы получите ложные срабатывания, хотя страница доступна.

Как проверить

Адрес и его цепочку можно проверить в инструменте проверки кода ответа. Для разных методов используйте curl:

bash
curl -i -X OPTIONS https://example.com/api/subscribe
curl -I https://example.com/api/subscribe          # HEAD
curl -i -X POST -d "email=a@b.ru" https://example.com/api/subscribe

Частые вопросы

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

Адрес существует, но не принимает метод запроса (GET, POST, PUT и т. д.). В заголовке Allow сервер перечисляет разрешённые методы.

Почему nginx выдаёт 405 при отправке формы?

Чаще всего форма отправляет POST на статический файл или неверный адрес. Укажите в action URL серверного обработчика.

Чем 405 отличается от 404 и 403?

404: ресурса нет. 403: доступ запрещён. 405: ресурс есть и доступен, но не работает с таким методом.

Как исправить 405 при вызове API?

Проверьте метод и URL запроса, сверьте с документацией API, убедитесь, что редирект не поменял POST на GET, и что сервер обрабатывает OPTIONS для CORS.

Читайте также