Подтвердить что ты не робот

Отдельный статус HTTP для неавторизованных и не авторизированных в RESTful API

Поэтому отправьте несколько разных заголовков статуса в моем API, включая 404, 409, 201, 302 и тому подобное. Теперь у меня проблемы с 401 Unauthorized. В настоящее время я отправляю его, если пользователь не вошел в систему (весь API управляется правами) или если пользователь не удовлетворяет конкретным требованиям к доступу к определенному ресурсу, который был получен/изменен.

Теперь я также управляю внешним клиентом (jQuery/HTML-приложение), и я хотел бы различать два случая для 401. Есть ли определенный статус, который я должен использовать для того, чтобы он не вошел в систему? Лучший способ справиться с этим, чтобы отправить содержимое тела вместе с заголовком?

4b9b3361

Ответ 1

Вы должны использовать 403, чтобы указать, что пользователь не имеет права доступа к ресурсу. Использование 401 означает, что пользователю необходимо предоставить учетные данные так же, как вы его используете. См. Описания 401 и 403 здесь.

Ответ 2

Как говорят laz, вы должны использовать 403, когда вы аутентифицировали пользователя, но у пользователя нет разрешения делать то, о чем она просит. например вы можете разрешить GET'у ресурса, но не DELETE или PUT.

  • 401 будет неправильным, поскольку в основном говорит, что "я не распознаю эти учетные данные"
  • 403 является правильным, поскольку в нем говорится, что "вам не разрешено делать это"

В любом случае тело ответа должно всегда содержать больше информации даже если это ответ об ошибке. Это позволяет клиенту выйти, надеюсь, двигаться вперед (используя встроенные ссылки) или путем предоставления достаточной информации о том, как действовать (например, "Мои записи показывают, что у вас нет разрешения на удаление XXX", обратитесь к своему системному администратору и попросите FOOBAR ").