Исправьте код состояния HTTP, когда ресурс доступен, но недоступен из-за разрешений. - PullRequest
8 голосов
/ 23 августа 2010

Я создаю протокол RESTful для приложений Dynamic Carpooling, для моей диссертации по информатике.

В протоколе я также должен формально указать код состояния HTTP для каждой операции. У меня есть проблема, связанная с конфиденциальностью. Предположим следующее:

GET /api/persons/angela/location

Извлекает текущую позицию пользователя "ангела". Очевидно, что не все должны быть в состоянии получить результат. Только сама Анжела и возможный водитель, который собирается ее забрать, должны знать это.

Я не могу решить, возвращать ли 404 Not Found или 401 Forbidden.

Есть намеки? Что будет лучшим и почему?

Ответы [ 4 ]

19 голосов
/ 23 августа 2010

Согласно Википедии RFC 2616 ), код 401 используется, когда страница существует, но требует аутентификации;403 для страницы, где аутентификация ничего не изменит.(В дикой природе 403 обычно означает, что права доступа к чему-либо неверны, тогда как 401 запросит у пользователя имя пользователя / пароль).404 - это то место, где документ просто не существует.

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

0 голосов
/ 11 сентября 2016

Мне я буду использовать 400 Плохой запрос.
Потому что мое приложение не попадет в недоступные ресурсы программно.
Фильтрация разрешений пользователей и скрытие недоступных ресурсов - это, на мой взгляд, хороший пользовательский опыт. Если мой сервер получил недоступный запрос, это означает, что кто-то пытается что-то сделать.
Вот почему я выбираю 400 - Плохой запрос в моих приложениях.

0 голосов
/ 23 августа 2010

Если в запросе указаны учетные данные авторизации, а у запрашивающей стороны нет прав доступа к этому ресурсу, следует вернуть 403.

Если в запросе не указаны учетные данные для авторизации, вы должны вернуть 401.

0 голосов
/ 23 августа 2010

Определенно НЕ 404. 404. Просто не найдено.
401 отказано в доступе.
403. Запрещено.

Я бы пошел с 401

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...