在Jetty中设置最大URL长度

Phu*_*ang 3 url jetty

我看了看,找到了答案,具有GET请求URL超过码头最大长度问题,有些人是设置在headerBufferSize到的jetty.xml是一个更大的数字在这个Solr的故障排除手册.

但是,我很难理解标头缓冲区大小与请求URL的长度有什么关系?如果设置headerBufferSize增加请求的URL长度限制,则headerBufferSize的6 KB值对应于请求URL的最大长度是多少?我问的原因是因为大多数浏览器强加的URL的最大长度大约为2000个字符,因为不同浏览器中URL的最大长度是多少?和headerBufferSize的单位是字节.

Joa*_*elt 9

在典型的POST请求中,您将看到以下内容......

POST /to/my/path HTTP/1.1
Content-Type: application/x-www-form-urlencoded;charset=utf-8
Host: https://my.machine.com
Content-Length: 10

Action=Add
Run Code Online (Sandbox Code Playgroud)

打破这个:

  • 通过内容长度行的POST是请求标题.
    • POST行在HTTP术语中称为Request-Line,它包含方法(POST)+ abs_path(/ to/my/path)+ http version(HTTP/1.1)
    • Content-Type - 让我们知道如何格式化/编码正文内容.
    • Host - 让服务器知道正在访问的主机(主要由虚拟主机设置使用)
    • Content-Length - 让我们知道有10个字节的正文内容
  • Action=Add是POST正文内容.

其核心是请求或响应的两个部分,即标题和正文内容.

设置时,headerBufferSize您正在设置标题内容的最终上限(不是正文内容).

当您拥有无限的标头大小(从滥用内存消耗到故意的散列图冲突,导致过多的CPU使用)时,会出现许多滥用/漏洞.限制标头缓冲区大小限制了这些问题的范围.(这些漏洞并非Jetty独有,但适用于所有Web服务器)

如果你达到这些限制,你应该考虑评估你使用solr的方式(例如在你应该使用POST时错误地使用GET),因为增加headerBufferSize也会打开各种已知的Web漏洞.

更新:2013年10月24日

请参阅与URL的最大长度相关的其他答案