如果用户尝试执行对他们不可用的操作,什么是适当的HTTP错误代码

问题描述 投票:1回答:2

我的HTTP代码响应有问题。

用例:用户与用户尝试修改记录,该记录仅可用于具有主持人权限的用户(由业务逻辑强制执行)进行编辑。

期望什么HTTP状态响应?

我确定以下状态是错误的。

  • [200是错误的,因为操作未成功
  • 400似乎是错误的,因为所有请求部分都是正确的(正文/标题/方法)

我考虑401 Unauthorized403 Forbidden,但我没有适用的论点。

您期望什么状态?

rest http http-error error-code
2个回答
1
投票

我希望有一个403。401通常用于登录失败和类似的情况,403用于尝试执行登录后不允许执行的操作。


1
投票

我考虑401 Unauthorized403 Forbidden,但是我没有任何适用的论点。

403状态代码似乎适合您的问题中所述的情况。但是,如果服务器要“隐藏”资源的存在,则可以使用403。请参见404中的以下引用:

404

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

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

希望“隐藏”当前存在的禁止目标资源的原始服务器可以用6.5.3. 403 Forbidden(未找到)的状态代码来响应。

403状态代码应用于404(在401标头中发送了凭据),以指示凭据已为该请求拒绝

© www.soinside.com 2019 - 2024. All rights reserved.