Каков наиболее подходящий код статуса HTTP для возврата, если отсутствует требуемый заголовок?
Я прочитал Какой код ответа HTTP-статуса я должен использовать, если в запросе отсутствует требуемый параметр?, но он специально не спрашивал о заголовках, и не казалось чтобы быть консенсусом.
Контекст этого вопроса предполагает успешную аутентификацию. В настоящее время я предпочитаю либо 400 (хотя это не так, потому что на самом деле это не случай "неправильного синтаксиса" ) или 403. Учитывая описание 403:
Сервер понял запрос, но отказывается его выполнять. Авторизация не поможет, и запрос НЕ ДОЛЖЕН повториться. Если метод запроса не был HEAD, и сервер хочет обнародовать почему запрос не был выполнен, СЛЕДУЕТ описать причину для отказа в сущности.
Это имеет для меня наибольшее значение.
Может кто-нибудь, пожалуйста, просветит меня? Спасибо.
Ответы
Ответ 1
400 Bad Request
Это ошибка пользователя в запросе. В отличие от 403, клиенту должно быть разрешено повторить свой запрос, но только после изменения:
10.4.1 400 Плохой запрос. Запрос не мог быть понят сервером из-за искаженного синтаксиса. Клиент НЕ ДОЛЖЕН повторять запрос без изменений.
Edit
Как отмечает Марк Рид в комментариях, 403 говорит: "Нет ничего плохого в том, что вы мне прислали. У вас есть правильная авторизация, и синтаксис действителен. Я просто не хочу делать то, что вы просите".
Часть, выделенная жирным шрифтом, просто говорит: если сервер так выбирает, он может точно сказать клиенту, почему он не хочет выполнять запрос.