rails api中阻止的用户配置文件的最佳HTTP状态代码是什么?

bab*_*bie 9 api ruby-on-rails http

我在Rails中为社交应用编写了一个API.这个应用程序喜欢Facebook,用户可以阻止其他用户.如果用户A阻止用户B,则用户B无法查看用户A的个人资料页面.那么我应该返回的最佳HTTP代码状态是什么:404,403,204或200(什么都不渲染)?

Ale*_*jin 7

我更喜欢使用 403 Forbidden

403(禁止)状态码表示服务器理解了请求,但拒绝授权。希望公开为什么禁止请求的服务器可以在响应有效负载(如果有)中描述该原因。

如果请求中提供了身份验证凭据,则服务器认为它们不足以授予访问权限。客户端不应该自动使用相同的凭据重复请求。客户端可以用新的或不同的证书重复请求。但是,出于与凭据无关的原因,可能会禁止请求。

希望“隐藏”当前存在的禁止目标资源的原始服务器可能会以404(未找到)状态码进行响应。

https://tools.ietf.org/html/rfc7231#section-6.5.3


Nik*_*rin 5

最佳做法是403,但是这样做会暴露用户已被阻止的事实。如果你不想这样,你可以返回404。以 Github 为例,未经授权访问私有存储库总是返回404.