我正在为我的计算机科学论文构建动态拼车应用程序的 RESTful 协议。
在协议中,我还必须正式指定每个操作的 HTTP 状态代码。我遇到了这个“与隐私相关”的问题。假设如下:
GET /api/persons/angela/location
检索用户“angela”的当前位置。 显然不是每个人都能获得结果。只有安吉拉本人和可能会接她的司机应该知道。
我无法决定是返回 404 Not Found 还是 401 Forbidden 在这里
有什么提示吗?什么是最好的,为什么?
如果请求中提供了授权凭据,而请求者没有访问此资源的权限,那么您应该返回 403。
如果请求中没有提供授权凭据,那么您应该返回 401。
绝对不是 404。404 只是找不到。
401 访问被拒绝。
403 是禁止的。
我会选择 401
对我来说,我会使用 400 Bad request.
因为我的应用程序不会以编程方式访问无法访问的资源。
过滤用户权限和隐藏不可访问的资源在我看来是很好的用户体验。
如果我的服务器收到无法访问的请求,这意味着有人试图做某事。
这就是我选择 400 - Bad request in my applications 的原因。
如果用户有有效的凭据,但没有查看资源的权限,错误 403。如果他没有经过身份验证,并且需要,错误 401。根据 rfc https://www.rfc-editor.org /rfc/rfc2616#section-10.4.2,error 401表示缺少凭据,error 403表示其他授权问题,例如登录后未被授予权限。但只有在说明原因的情况下才能使用拒绝(例如缺乏权限),如果没有提供对经过身份验证的用户拒绝的解释,您可以根据 RFC 使用 404 错误。