Ответ
Статус 405 Method Not Allowed указывает, что HTTP-метод, использованный в запросе (например, POST, DELETE), известен серверу, но не разрешён для целевого ресурса.
Согласно спецификации, ответ с кодом 405 должен содержать заголовок Allow, перечисляющий допустимые методы для данного URL.
Пример ответа сервера:
HTTP/1.1 405 Method Not Allowed
Allow: GET, HEAD, POST
Content-Type: application/json
{
"error": "DELETE method is not supported for this endpoint."
}
Типичные причины:
- Попытка выполнить
DELETEдля ресурса, доступного только для чтения (GET,HEAD). - Вызов
PUTна коллекцию, где разрешено только создание черезPOST. - Ошибка в конфигурации маршрутизации на сервере (например, в REST API framework).
Действия при получении 405:
- Проверить документацию API для нужного эндпоинта.
- Убедиться в правильности HTTP-метода в запросе.
- Изучить заголовок
Allowв ответе, чтобы узнать доступные методы.
Ответ 18+ 🔞
А, слушай, вот эта ошибка, 405, она такая... ну, знаешь, как будто ты пытаешься впихнуть невпихуемое. Типа, пришёл ты в библиотеку и пытаешься книгу не прочитать, а, блядь, поджечь её прямо на полке. Тебе говорят: «Мужик, тут можно только читать, а ты что делаешь?». Вот это оно и есть.
405 Method Not Allowed — это когда серверу в принципе понятно, что ты от него хочешь (метод-то он знает, типа DELETE или PUT), но для вот этого конкретного места, куда ты стучишься, этот способ — полный пиздец и недопустим.
И тут, внимание, важный момент, ёпта! По всем правилам хорошего тона, сервер, который шлёт тебе 405, обязан приложить к ответу заголовок Allow. Это такой намёк, мол, «чувак, не тупи, вот что тут можно делать». Без этого заголовка — он сам мудак и не до конца следует протоколу.
Вот как выглядит культурный отлуп:
HTTP/1.1 405 Method Not Allowed
Allow: GET, HEAD, POST
Content-Type: application/json
{
"error": "DELETE method is not supported for this endpoint."
}
Перевод: «Ты пытаешься удалить (DELETE) то, что можно только смотреть (GET) или добавлять (POST). Иди нахуй со своим делетом».
А теперь, откуда эта хуйня обычно вылезает:
- Ты ломишься с
DELETEилиPUTтуда, где ресурс только для чтения. Представь, пытаешься отредактировать или стереть табличку с законом на стене. Не выйдет, блядь. - Хочешь обновить (
PUT) целую коллекцию, а тебе разрешают только создать новую запись черезPOST. Ну, логично, нельзя же всю базу одним махом переписать, ты чё, охуел? - И, конечно, классика — косяк в настройках сервера. Разработчик накосячил с роутингом в своём REST API, и теперь твой легальный запрос летит в пизду.
Что делать, если тебя накрыло 405-м?
- Первым делом — в документацию, блядь! Посмотреть, что вообще можно делать с этим эндпоинтом.
- Перепроверить, не обосрался ли ты с методом в самом запросе. Может, хотел
GET, а отправилPOSTпо привычке. - Усердно вглядеться в заголовок
Allowв ответе. Там будет список того, что можно. Это твой план спасения. Если этого заголовка нет — ну, что ж, сервер тот ещё мудак, придётся гадать.