如果缺少必需的标头,返回的最合适的HTTP状态代码是什么?

时间:2012-05-14 02:26:48

标签: http-headers http-status-codes http-status-code-403 http-status-code-400

我读过What HTTP status response code should I use if the request is missing a required parameter?,但没有特别询问标题,似乎没有达成共识。

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

  

服务器理解请求,但拒绝履行请求。   授权无效,请求不应重复。 如果   请求方法不是HEAD,服务器希望公开   为什么请求没有得到满足,它应该描述原因   对于实体的拒绝。

这对我来说最有意义。

有人可以赐教吗?感谢。

1 个答案:

答案 0 :(得分:46)

400错误请求

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

  

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

修改

正如Mark Reed在评论中指出的那样,403说:“你发给我的东西没有错。你有适当的授权,语法是有效的。我只是不想做你所要求的。”

你以粗体显示的部分只是说,如果服务器如此选择,它可以告诉客户端它为什么不想满足请求。