登录失败返回 200 Ok

我正在向 /session.json 发送一个 POST 请求,请求体为:

{
  "login": "skroob",
  "password": "12345",
  "authenticity_token": "..."
}

登录成功时,状态码为 200,返回的 JSON 包含大量用户数据。登录失败时,返回的 JSON 如下:

{"error": "Incorrect username, email or password"}

但状态码仍然是 200。这是一个 bug 吗?失败登录的状态码是否应该大于等于 400,以表示失败?

1 个赞

:thinking:

也许吧。我可能会选择 401

但那些也是HTTP状态码,用于HTTP客户端连接;我认为这种细微差别会导致诸如返回200(“您的POST成功了,这是反馈”)之类的决定。

我自己也不确定。:slight_smile:

1 个赞
1 个赞

我能理解为什么登录失败会返回 200,这意味着您的登录 成功地 失败了,而不是 不成功地 失败了。:upside_down_face:

4 个赞

请注意,这也是一种“功能”,因为它会混淆试图登录的机器人。

我对此是否要更改持保留态度。也许……

6 个赞

我不是在要求更改。我想要的是一种选择:更改,或者确认该行为是故意的——我现在已经得到了。谢谢!

3 个赞