【发布时间】:2011-06-14 10:47:42
【问题描述】:
HTTP/1.1 specification (RFC 2616)对status code 400, Bad Request (§10.4.1)的含义有以下说法:
请求无法被理解 服务器由于语法错误。 客户不应该重复 无需修改即可请求。
如今,在一些基于 HTTP 的 API 中似乎有一种普遍的做法,即使用 400 来表示请求的逻辑而不是语法错误。我的猜测是 API 这样做是为了区分 400(客户端诱导)和 500(服务器诱导)。使用 400 表示非句法错误是否可以接受或不正确?如果可以接受,是否有关于 RFC 2616 的注释参考,可以更深入地了解 400 的预期用途?
例子:
【问题讨论】:
-
Web 服务器为什么要关心语法错误?
-
@leppie:例如,Web 服务器需要确保请求行和标头格式正确。
-
但这将是一个格式错误的客户端请求。
-
@leppie:客户端总是可以发送格式错误的请求。很明显,在这种情况下,服务器会以 400 响应。不清楚的是 400 是否是对格式良好但无效(每个应用程序)请求的合法响应。
-
@Atif Aziz:如果请求可以传递到某个后备服务器,那么它应该有 500 错误,除了众所周知的客户端错误,如身份验证失败或 404。
标签: http http-status-codes http-status-code-400