Так что отправьте несколько разных заголовков статуса в моем API, включая 404
, 409
, ] 201
, 302
и т. П. Теперь я Я столкнулся с проблемами с 401 Unauthorized
. В настоящее время я отправляю его, если пользователь не вошел в систему (весь API управляется правами) или если пользователь не удовлетворяет определенным требованиям доступа для конкретного ресурса, который извлекается / изменяется.
Теперь я также контролирую клиент внешнего интерфейса (приложение jQuery / HTML), и я хотел бы провести различие между двумя случаями для 401
. Есть ли определенный статус, который я должен использовать, чтобы не войти в систему? Является ли лучший способ обработать его для отправки содержимого тела вместе с заголовком?
Вы должны использовать 403
чтобы указать, что пользователь не авторизован для доступа к ресурсу. Использование 401
предназначено для указания того, что пользователю необходимо предоставить учетные данные, так же, как вы используете это сейчас. См. описания 401
и 403
здесь.
Как говорят, вы должны использовать 403
, когда вы аутентифицировали пользователя, но у пользователя нет разрешение делать то, о чем она просит. например вы можете разрешить GET'ing для ресурса, но не DELETE или PUT.
В любом случае, ответ тело всегда должно содержать больше информации, , даже если это ответ с ошибкой . Это позволяет клиенту выйти из ситуации, надеясь продвинуться вперед (используя встроенные ссылки) или предоставив достаточно информации о том, как действовать (например, «Мои записи указывают на то, что у вас нет разрешения на удаление XXX, обратитесь к системному администратору и попросите ФУБАР разрешение ").