2

http post header 中有空格会导致错误请求吗?

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

我收到一个 HTTP/1.1 400 错误请求

但是,如果使用 Content-Type "text/xml; charset=utf-8" 发布相同的请求

即在字符集中没有空格它可以工作。

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

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

谢谢!!

4

1 回答 1

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"and"harset"部分。在该上下文中,这些未定义为有效文本。

此外,虽然协议知道什么看起来是有效的,什么是无效的,但它还不够智能,无法推断出如何修复这样的简单错字。因此,服务器响应“400 Bad Request”是合适的并且符合协议标准。对于它的价值,您还可以在 RFC 中找到 HTTP 状态代码。状态码400 Bad Request表示:

由于语法错误,服务器无法理解该请求。客户端不应该在没有修改的情况下重复请求。

即不要那样做。:)

于 2013-10-22T15:02:59.313 回答