【问题标题】:What would be the correct HTTP response for a change password request where the old password entered is incorrect?对于输入的旧密码不正确的更改密码请求,正确的 HTTP 响应是什么?
【发布时间】:2020-08-17 13:18:01
【问题描述】:

在更改密码请求中,如果旧密码不正确,正确的响应是什么?

我在想 401 未经授权?还是 400 Bad Request?

【问题讨论】:

    标签: http http-status-codes


    【解决方案1】:

    这有点棘手,因为我认为您可以为其中任何一个提出论点,而且我也觉得 409422 可以争论。

    最终,我认为使用更具体的 HTTP 状态代码很重要,如果通用客户端可以对响应做一些有用的事情。因此,我认为在这种情况下并不重要。

    我想我会使用 401,因为我将它与 Authorization 标头相关联,在这种情况下您可能没有使用它。

    422400是最好的。这完全基于意见。其中任何一个都表明请求有问题(422 更具体一点:格式没有问题,但发送到服务器的实际值有问题)。

    409有时用来表示当前请求有效,但是服务器当前状态阻止了它成功。鉴于服务器的当前状态是“当前密码是别的”,409 可能是合适的。

    最终我不认为有任何错误真的,这并不真的重要,但我的投票将首先投给422,然后是400

    一些来源(前几个是我的,最后一个链接来自 http 规范的作者之一)

    【讨论】:

      【解决方案2】:

      答案与登录页面的答案相同。

      现在,答案是什么?在这个问题上存在一些分歧,但在我看来是200。我在this answer 中讨论这个问题并链接到其他一些意见。

      【讨论】:

      • 如果请求的目的是更改密码,则 200 OK 响应表明该请求已成功完成。
      • @Evert:这取决于该“意图”是应用程序语义还是协议语义的一部分。正如我所说,人们对这个问题的bothsides 有强烈的意见。在此视图下,200 响应表明请求已成功接收并被理解,结果将在响应正文中披露。不正确的密码不会被视为“客户端错误”。
      • @Evert:我认为上下文也很重要。在 RESTful 服务的上下文中,可以为422 提出一个很好的论据。我认为这个问题与浏览器中的更改密码表单有关,我相信在这种情况下返回 200 验证错误是相当普遍的。
      • 没错,我把它当作 REST API。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 2019-11-20
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      相关资源
      最近更新 更多