The HTTP/1.1 规范 (RFC 2616) http://www.w3.org/Protocols/rfc2616/rfc2616.html关于 的含义有以下说法状态代码 400,错误请求 (§10.4.1) http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1:
该请求无法被理解
由于语法错误而导致服务器。
客户不应该重复
请求不加修改。
如今,一些基于 HTTP 的 API 似乎普遍使用 400 来表示logical而不是一个syntax请求出错。我的猜测是 API 这样做是为了区分400 http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1(客户引起的)和500 http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1(服务器引起的)。使用 400 来指示非语法错误是否可以接受或不正确?如果可以接受,RFC 2616 上是否有带注释的参考,可以更深入地了解 400 的预期用途?
例子:
- Google 数据协议、协议参考、HTTP 状态代码 http://code.google.com/apis/gdata/docs/2.0/reference.html#HTTPStatusCodes
状态 422(RFC 4918,第 11.2 节 http://greenbytes.de/tech/webdav/rfc4918.html#STATUS_422)想到:
422(不可处理的实体)状态代码意味着服务器了解请求实体的内容类型(因此 415(不支持的媒体类型)状态代码是不合适的),并且请求实体的语法是正确的(因此 400(错误请求) )状态代码不合适)但无法处理所包含的指令。例如,如果 XML 请求主体包含格式正确(即语法正确)但语义错误的 XML 指令,则可能会出现此错误情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)