2015-05-21 2 views
0

Если пользователь отправляет запрос на сервер, а для связи требуются определенные пользовательские заголовки для работы. В этом случае код ошибки должен быть 400, 403 или 422?Какой код состояния HTTP используется, когда требуемый заголовок не указан?

+0

Некоторые обсуждения здесь - http://stackoverflow.com/questions/3050518/what-http-status-response-code-should-i-use-if-the-request-is-missing-a-required - – Prabhu

+0

Заголовки и параметры разные, не так ли? – sarunast

+0

Да ... Я думаю, что отсутствующие параметры также являются семантическим несоответствием. Итак, я думаю, что 422 костюма отлично. – Prabhu

ответ

0

Спецификация HTTP требует, чтобы любой клиент обрабатывал ответ как 400 по умолчанию, если он не понимает конкретного значения последних двух цифр. Поэтому вы всегда должны проектировать с предположением, что некоторые клиенты будут обрабатывать ответ как 400.

Если вы можете найти код состояния 4xx, специальная дополнительная обработка которого лучше подходит для вашего приложения, а затем используйте его. Когда клиент понимает достаточно, чтобы выполнить эту дополнительную обработку, вам немного лучше, чем если бы вы отправили статус по умолчанию.

В настоящее время зарегистрированных код состояния, которые, кажется, чтобы соответствовать вашим серверам значений являются:

  • 403 Forbidden - это о сервере отклоняет запрос, пока не будет каким-то образом изменились. Предпочтительно по причине, указанной в корпусе реакции.
  • 406 Не допустимо - это более точно относится к значениям в заголовках запроса, которые не являются правильными. Наиболее часто используется для значений заголовка Accept:.
  • 412 Условие не выполнено - это касается проблем с заголовками, связанными с ведением переговоров о том, какой орган ответа будет отправлен. Наиболее часто используется для значений заголовка If- *.

403 представляется наиболее точным, когда сервер отказался предоставить что-либо, если не отправлены пользовательские заголовки.

Смежные вопросы