已验证但未授权的 HTTP 状态代码?

Posted

技术标签:

【中文标题】已验证但未授权的 HTTP 状态代码?【英文标题】:HTTP Status Code for Authenticated but Unauthorized? 【发布时间】:2017-01-02 12:40:54 【问题描述】:

如果请求已通过身份验证(根据The OAuth 2.0 Authorization Framework: Bearer Token Usage: Authorization Request Header Field),但经过身份验证的用户无权查看所请求的资源,则 REST API 应使用哪个 HTTP 状态代码响应?

例如,假设我请求查看某个用户的个人资料:GET /users/123。我验证成功,但该用户阻止了我。服务器应该使用哪个 HTTP 状态码来响应?

相关:

Authentication versus Authorization HTTP status code for missing authentication

【问题讨论】:

greenbytes.de/tech/webdav/rfc7231.html#status.403 这里有一个有用的guide 用于选择适当的 HTTP 状态代码 我的回答能解决你的疑惑吗? 是的,谢谢@Opal。 :-) 【参考方案1】:

你需要的代码是403 Forbidden:

来自wikipedia:

403 响应通常表示以下两种情况之一:

提供了身份验证,但不允许经过身份验证的用户执行请求的操作。 禁止所有用户操作。例如,目录列表请求返回代码 403 时,目录列表已经 已禁用。

【讨论】:

以上是关于已验证但未授权的 HTTP 状态代码?的主要内容,如果未能解决你的问题,请参考以下文章

http StatusCode(状态码)

Redux:动作已成功调度,但未创建状态

前端发请求后端没接受到是啥情况,状态码200

我们可以创建自定义 HTTP 状态代码吗?

应该使用啥 http 状态代码来告诉客户端会话已超时?

HTTP常见状态码