Jetty在格式错误的HTTP POST标头上返回“HTTP / 1.1 400错误请求”。这是预期的吗?

时间:2013-10-22 14:51:56

标签: http jetty http-status-code-400

在http帖子标题中有空格会导致BAD请求吗?

我在其中一个请求中看到了这一点: Content-Type“text / xml; c harset = utf-8”

我收到HTTP / 1.1 400错误请求

但是如果发布相同的请求 Content-Type“text / xml; charset = utf-8”

即charset中没有空间。

在我的实现中,我没有进行任何验证。 所以我假设我的Jetty服务器抛出一个错误的请求,因为charset中有空格?

我是对的还是我的解释错了。

谢谢!

1 个答案:

答案 0 :(得分:1)

是的,有一个空间放置它应该会导致错误的请求。

HTTP 1.1是由标准定义的协议。通过引用标准文档,可以确定什么是有效请求和什么不是有效请求。

您可以在RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1找到HTTP / 1.1的标准,您可能特别希望查看14.17 Content-Type3.7 Media Types部分。

基本上,通过将空格插入"charset",您将创建无效的HTTP请求,因为协议无法理解"c""harset"部分。那些未被定义为该上下文中的有效文本。

此外,虽然协议知道什么似乎是有效的,什么不是,但它不够聪明,无法推断如何解决这样的简单错字。因此,服务器响应“400 Bad Request”是合适的并且符合协议标准。对于它的价值,你也会找到HTTP status codes in the RFC。状态码 400错误请求表示:

  

由于格式错误,服务器无法理解该请求   句法。客户端不应该重复请求   修改

即。不要那样做。 :)