Вопрос по web-applications, http-error, http-status-codes – Правильное использование кодов ошибок HTTP. 550 - Почему это 5xx вместо 4xx?

6

Сегодня совместная работа использовала ошибку 550 для действия удаления, когда пользователь неу меня нет разрешения, которое поначалу показалось мне плохим, потому что, как яМне известно, что эта ошибка выглядит как ошибка клиента (ака 4xx) для меня, а не для сервера (ака 5xx).

Глядя на описание, оно подсказывает, что оно использовалось правильно. Вместо ошибки 401, которую я использовал с некоторыми 'проблемы' до.

Проблема с ошибкой 401: если пользователь A вошел в систему и попытался выполнить действие, которое возвращает 401, это может означать, что вы должны 'авторизоваться' так как ты неу него нет действительных учетных данных для доступа к этому http-ресурсу. Проблема с этим подходом заключается в том, что если пользователь вошел в систему, сервер знает, что он нене имеет разрешения, в этом случае выглядит как 550 этоболее уместно, но неМне кажется, что в этом сценарии должна использоваться ошибка 550.

Вопрос: чтоправильное использование (если есть) ошибки 550 в веб-приложениях. Я понимаю, это'Использование в FTP и SMTP ретрансляции. Если какой-то пользователь вошел в систему, отправляет запрос о недопустимом действии, какая ошибка должна быть возвращена?

Спасибо!

Ваш Ответ

1   ответ
10

Ошибки 5xx - это ошибки SERVER. Если пользователь неУ него нет разрешения, это должно быть ошибкой 4XX.

Однако тыисправить. Ошибка 401 означает, что пользователь должен войти в систему для доступа. т.е. аутентификация обязательна.

Ошибка, которую вы 'ищет это403 Запрещено

Это не имеет никакой двусмысленности в отношении того, вошел ли пользователь в систему или нет. Его четкий срез.

Из вики на http коды ошибок (http://en.wikipedia.org/wiki/List_of_HTTP_status_codes) (выделение мое):

403 Запрещено

Запрос был действительным, но сервер отказывается отвечать на него. [2] В отличие от несанкционированного ответа 401, аутентификация не имеет значения. [2] На серверах, где требуется аутентификация, это обычно означает, что предоставленные учетные данные были успешно аутентифицированыно учетные данные все еще не предоставляют клиенту разрешение на доступ к ресурсу (например, распознанный пользователь пытается получить доступ к ограниченному контенту).

Опять же, согласно вышеупомянутой вики, не существует такой вещи, как ошибка 550. Я полагаю, что вы могли бы реализовать это самостоятельно, но естьСкорее всего, не нужно быть честным. Однако это должна быть ошибка сервера, как определено в стандартах.

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