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

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

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

Как поступить в такой ситуации?
  • Вопрос задан
  • 4179 просмотров
Решения вопроса 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 ошибку нужно послать слишком длинный или ошибочный заголовок.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы