什么时候和为什么我应该使用403错误代码?

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

在我的应用程序中,我有一个案例,其中我有一个功能,将在企业版和标准版中启用。在这个功能中,我有创建实体的计数限制。在这个功能中,我有一个实体创建的次数限制,两个版本的次数限制是一样的。当计数超过时,我是否应该抛出403,还是直接返回422错误代码?

rest error-handling error-code
1个回答
0
投票

在我看来,你应该返回http状态406。不可接受。因为这是服务器的当前状态。

403状态适用于用户已经登录,但没有足够的要求在服务器上进行操作的情况。

除了错误406,你应该放一个msg来支付或增加当前账户的限额。


0
投票

一个重要的事情是要认识到响应的状态码,是(像头值一样)。元数据信息:它是以标准化形式提供的信息,以便通用组件能够理解正在发生的事情的语义。 细致的细节属于消息主体。

例如,考虑一下网络的模型:如果我们想让浏览器缓存反向代理网络蜘蛛理解正在发生的事情,我们使用元数据。 对于 人类 的读者,在响应有效载荷中提供了细粒度的细节。

另外,元数据属于 网传 域;服务器在看起来像网站的门面后面做着有趣的事情。

因为状态码是为通用组件准备的,所以我们衡量一个错误代码是否正确的主要标准是 "通用组件看到它时,会不会做正确的事情?"。

403 在HTTP1.1中具有这样的含义。

403(Forbidden)状态码表示服务器理解了请求,但拒绝授权。

"authorize "这个词有时会绊住人们的脚步,因为听起来这个状态是针对凭证的。 如果仔细阅读,则会发现并非如此

请求可能因与证书无关的原因而被禁止。

HTTP1.0的语言略有不同

服务器理解了这个请求,但拒绝执行。

403 意思是 "我不允许 但对是否允许别人做这件事却含糊其辞。

您可以考虑的另一种可能性是 409 冲突.

409(冲突)状态代码表示由于与目标资源的当前状态冲突,请求无法完成。 该代码用于用户可能能够解决冲突并重新提交请求的情况。 服务器应该生成一个包含足够信息的有效载荷,以便用户识别冲突的来源。

据我所知,这些代码是等价的,在某种意义上说,通用组件将以类似的方式对每个组件进行操作。

我不认为 406 不可接受因为这是一个关于领域逻辑的问题,而406是关于 主动协商. 同样,我也不认为 412 先决条件失败 的故障。前提条件.

同样,这里的主题是,我们正在寻找HTTP域中的正确匹配。

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