Ошибка 405 Method Not Allowed: метод не разрешён
Ошибка 405 Method Not Allowed означает, что адрес существует, но не принимает метод, которым к нему обратились: например, на странице, рассчитанной на GET, отправили POST. Помогает отправка запроса на правильный URL или правильным методом.
Обновлено 11 октября 2026 г.
Что значит ошибка 405
RFC 9110 (раздел 15.5.6): метод из строки запроса известен серверу, но не поддерживается целевым ресурсом. Сервер обязан прислать заголовок Allow со списком разрешённых методов. Отличие от 404: ресурс найден, дело в методе. Отличие от 403: причина не в правах, а в том, что ресурс просто не работает с таким методом.
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, а приложение его не поддерживает.
Что делать посетителю
- Обновите страницу и повторите действие: возможно, форма устарела.
- Вернитесь на страницу с формой и отправьте её заново, не обновляя страницу ответа.
- Очистите cookie и кеш сайта и отключите расширения.
- Если ошибка повторяется, сообщите владельцу сайта, какую форму или кнопку вы использовали.
Что делать владельцу и разработчику
Проверьте метод и адрес в запросе
Посмотрите в DevTools (вкладка Network) на запрос, вызвавший ошибку: метод, адрес, итоговый URL после редиректов. Сверьте с серверной частью: какой URL, какой метод она ждёт. Заголовок Allow в ответе подскажет, что разрешено.
Ограничьте методы осознанно
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;
}<LimitExcept GET HEAD POST>
Require all denied
</LimitExcept>Заметьте: в Apache директивы Limit и LimitExcept отвечают 403, а не 405. Если нужен именно 405 с Allow, формируйте его на уровне приложения.
Отдавайте правильный 405 в приложении
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:
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.