1

HTTP 是否限制 Start-Line(Request-Line 或 Status-Line)的长度?

如果是这样,当收到请求行长于最大长度的 HTTP 请求时,哪个状态码 HTTP 服务器应该响应?

4

1 回答 1

2

引用HTTP 1.1 RFC(2616)

Request-Line 以方法标记开始,接着是 Request-URI 和协议版本,并以 CRLF 结束。元素由 SP 字符分隔。除了最后的 CRLF 序列外,不允许使用 CR 或 LF。

   Request-Line   = Method SP Request-URI SP HTTP-Version CRLF

这没有指定长度限制。

Request-URI 本身可以很长,并且 rfc 也说明了这一点:

HTTP 协议对 URI 的长度没有任何先验限制。服务器必须能够处理它们所服务的任何资源的 URI,并且如果它们提供可以生成此类 URI 的基于 GET 的表单,则应该能够处理无限长度的 URI。如果 URI 比服务器可以处理的长(参见第 10.4.15 节),服务器应该返回 414(Request-URI Too Long)状态。

因此 Request-URI 存在“太长”状态,但这意味着“此服务器无法处理太长”而不是“超过规范允许的时间”。

于 2013-03-23T13:09:34.477 回答