49

我阅读了如果请求缺少必需的参数,我应该使用什么 HTTP 状态响应代码?但它没有具体询问标题,似乎也没有达成共识。

此问题的上下文假定身份验证成功。我目前偏爱 400(尽管这感觉不对,因为这不是“格式错误的语法”)或 403。鉴于 403 的描述:

服务器理解请求,但拒绝执行。授权将无济于事,并且不应重复请求。如果请求方法不是 HEAD 并且服务器希望公开请求未完成的原因,它应该在实体中描述拒绝的原因。

这对我来说最有意义。

有人可以启发我吗?谢谢。

4

1 回答 1

65

400 错误请求

这是请求中的用户错误。与 403 不同,应该允许客户端重复他们的请求,但只有在修改之后:

10.4.1 400 Bad Request由于语法错误,服务器无法理解请求。客户端不应该在没有修改的情况下重复请求。

编辑

正如 Mark Reed 在评论中指出的那样,403 表示:“您发送给我的内容没有任何问题。您有适当的授权并且语法是有效的。我只是不想做您要求的事情。”

粗体部分简单地说,如果服务器这样选择,它可以准确地告诉客户端它不想满足请求的原因。

于 2012-05-14T02:31:59.590 回答