Когда нужно отдавать 404 страницу, а когда 400?

Подскажите в каких случаях уместно отдавать пользователю 404 страницу, а когда 400?
В общем понятно: 404 - страницы нет, 400 - неправильный запрос. Но в чем принципиальная разница?

Например пользователь хочет посмотреть информацию о товаре. Но товар с id, который указал пользователь, не существует. Это 400 или 404 ошибка? Адрес вроде и есть, но для конкретного товара его нет.

Как поступить в такой ситуации?
  • Вопрос задан
  • 4447 просмотров
Решения вопроса 1
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
400 - это запрос, который сервер не смог понять. Например, POST-запрос туда, куда можно делать только GET/HEAD. Или слишком длинный $uri.
Если сервер смог получить запрос, "понять" его, обработать, но показать пользователю по этому $uri нечего - то это 404. В случае с товаром - явно 404.

Вообще, выставлять руками 400 ошибку вам никогда не нужно, кроме тех случаев, когда вы явно уверены, что хотите 400-ку (ну вот в примере с POST-запросом можно руками выставить, но вообще это 405, просто его редко используют). Генерация 400й ошибки для 99% случаев в мире - это работа вебсервера, а не кода.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
pavel_salauyou
@pavel_salauyou
Symfony2 & Angular разработчик
если url такой есть но товара нет, то так пользователю и говорить, что товара нет, если бы url вы удалили, то тогда 404 ошибку надо кидать. а 400 ошибку нужно кидать когда например, вместо post запроса идёт put запрос, вот тогда действительно неверный запрос к урлу.
Ответ написан
Комментировать
nepster-web
@nepster-web
404 - это страница не найдена. "Например пользователь хочет посмотреть информацию о товаре. Но товар с id, который указал пользователь, не существует. " - это 404.

400 - это некорректный запрос или же ошибка в запросе. "сервер обнаружил в запросе клиента синтаксическую ошибку. " Походу как пример, чтобы отловить 400 ошибку нужно послать слишком длинный или ошибочный заголовок.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы