HTTP 405 Method Not Allowed

Верный адрес, неверный метод: ресурс существует, но не принимает этот HTTP-метод.

Что означает HTTP 405

HTTP 405 Method Not Allowed означает, что сервер распознаёт URL, но HTTP-метод — GET, POST, PUT, DELETE — для него не поддерживается. Ответ должен включать заголовок Allow со списком поддерживаемых методов.

Практически всегда это несоответствие между клиентом и API: форма отправляет POST на маршрут страницы, скрипт отправляет PUT там, где API ожидает PATCH, либо вебхук настроен с неверным методом.

Частые причины ошибок 405

  • POST отправлен на эндпоинт, который обрабатывает только GET (или наоборот) — типично после копирования примеров из документации API.
  • Редирект (301/302) преобразовал POST в GET до того, как запрос достиг эндпоинта.
  • Веб-сервер глобально блокирует такие методы, как PUT/DELETE, хотя приложение их ожидает.
  • Неверный маршрут: целевой эндпоинт — /api/items (POST), но запрос попал на /items.

Как исправить со стороны разработчика

  • Прочитайте заголовок ответа Allow — он перечисляет ровно те методы, которые принимает URL.
  • Проверьте документацию API на правильную пару метода и пути.
  • Если на пути есть редирект, используйте 307/308, чтобы метод сохранился при переходе.
  • На сервере убедитесь, что маршрут фреймворка объявляет нужный метод и ни один прокси его не отбрасывает.

Пример ответа

HTTP/1.1 405 Method Not Allowed
Allow: GET, HEAD
Content-Type: application/json

{"error":"method_not_allowed"}

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

Как узнать, какие методы поддерживает URL?

Проверьте заголовок Allow в ответе 405 или отправьте запрос OPTIONS на этот URL.

Почему мой POST превратился в GET?

Редирект 301 или 302 по пути позволил клиенту сменить метод. Используйте редиректы 307/308 для эндпоинтов, принимающих POST.

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

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