美好的一天,
当请求者有权访问该URL但具有不正确的查询参数时,应使用什么http状态代码。
我们这样说:
作为用户100,我可以访问http://example.com/bankaccount/get?id=100
但是,我不应该看到其他用户的银行帐户,让我们通过http://example.com/bankaccount/get?id=200说明。
应该使用哪种HTTP状态代码?
答案 0 :(得分:5)
如果禁止访问,请返回403:
服务器理解请求,但拒绝履行请求。 [...]如果请求方法不是HEAD并且服务器希望公开为什么请求没有得到满足,那么它应该描述实体中拒绝的原因。如果服务器不希望将此信息提供给客户端,则可以使用状态代码404(未找到)。
但是我没有看到明确指定ID的重点,因为你现在已经是用户的ID了。所以/bankaccount/get
就足够了。
答案 1 :(得分:1)
在你的例子中,我要么发送一个302,将他重定向到一个错误页面,要么就是一个带有自定义错误页面的200。这将是用户友好的版本。
编辑: 如果要在状态代码的4xx区域中选择某些内容,请确保Web服务器提供相应的错误页面。普通用户不会乐意看到白屏“403 - Forbidden”。带有自定义错误页面的403是解决此问题的好方法。
答案 2 :(得分:0)
我投票支持403 - 禁止,因为这是合法请求,但不允许当前用户使用。
如果查询参数名称错误,另一方面,它可能应该是404。