【发布时间】:2014-10-20 14:32:43
【问题描述】:
如果服务器检测到 URI 的查询字符串已被客户端篡改,最好使用什么 HTTP 状态码?
【问题讨论】:
-
是客户端错误,看4xx范围。
标签: http query-string http-status-codes
如果服务器检测到 URI 的查询字符串已被客户端篡改,最好使用什么 HTTP 状态码?
【问题讨论】:
标签: http query-string http-status-codes
了解篡改的性质很重要。如果您只是想禁止人们访问某些网址,403 通常是最合适的。
但可能还有更具体的内容。
假设我们有一个集合,并且可以通过某个标识符 (.../collection/1) 访问这些项目。现在让我们假设用户可以使用带有按钮的 GUI 访问标识符在 1 到 100 之间的项目,例如设置 rest 调用,但不能用于标识符 > 100。现在,如果用户在浏览器中操作 HTML 和请求并尝试访问 id = 200 的项目,返回什么状态码最合适?
让我们说/collection/101。如果该项目存在,但不允许用户访问该项目,则403 是合适的。
如果101 是永远任何人都无法访问的,因为例如101 实际上是通过/collection2/101 访问的,那么404 状态码是最合适的。
如果/collection/101 不可访问,因为服务器有一个“状态”需要首先更改或解决。此状态可以由用户解决,不是访问控制问题,409可能是合适的。但我想说的是,这通常不适用于GET 之类的请求。
按照您的描述,这听起来更像是权限问题。那么403 是一个简单的选择。
【讨论】: