Correct HTTP status code when resource is available but not accessible because of permissions

I am building a RESTful protocol for Dynamic Carpooling applications, for my Computer Science thesis.

In the Protocol I also have to formally specify the HTTP status code for each operation. I've got this "privacy related" problem. Suppose the following:

GET /api/persons/angela/location

Retrieves the current position of user "angela". Очевидно, что не каждый должен иметь возможность получить результат. Только сама Анжела и возможный водитель, который собирается ее забрать, должны знать это.

Я не могу решить, возвращать ли здесь 404 Не найдено или 401 Запрещено.

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

10
задан dgraziotin 23 August 2010 в 12:24
поделиться

3 ответа

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

В вашем случае код 401 кажется наиболее подходящим, поскольку существует способ аутентификации пользователей, у которых ДЕЙСТВИТЕЛЬНО есть доступ к странице.

22
ответ дан 3 December 2019 в 16:08
поделиться

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

Я бы выбрал 401

2
ответ дан 3 December 2019 в 16:08
поделиться

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

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

0
ответ дан 3 December 2019 в 16:08
поделиться
Другие вопросы по тегам:

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