请求(GET)或(POST):
http://localhost:8080/images?name=iVBORw0KGgoAAAANSUhEUgAAAAUA%20AAAFC ......
响应:
状态代码:414 Request-URI太长 连接:关闭 内容长度:0
如何增加请求大小?
答案 0 :(得分:9)
您的请求URI大小超过8kb! Eeesh!
由于浏览器,代理和网络硬件中存在各种漏洞和错误,因此存在请求URI限制。
虽然可以在Jetty中增加Request URI限制检查,但为Jetty选择的值代表了公共互联网上各种http客户端和中介使用的当前安全最大值。
警告:您不想这样做
这不适合:
这仅适用于直接与Jetty服务器通信的自定义HTTP客户端之间限制的事务。
Jetty 9.2.6.v20141205的说明
如果您还没有Jetty Base ${jetty.base}
目录,请创建一个并初始化它。
[user]$ mkdir mybase
[user]$ cd mybase
[mybase]$ java -jar /path/to/jetty-distribution-9.2.6.v20141205/start.jar \
--add-to-start=http,deploy,webapp
修改${jetty.base}/start.ini
并使用所需的上限更改(或添加)以下属性。
jetty.request.header.size=8192
不,没有办法禁用此限制检查。
对于每次增加,你都会遇到越来越多的问题。
从某些浏览器(最终所有浏览器)开始不发送请求,更不用说jetty接收它了。
同时,许多代理服务器处理您的请求的能力开始失败,导致终止和失败的连接或请求。有时甚至会截断对Jetty的请求。
此外,每次增加都会使您遇到各种漏洞,这些漏洞与标头中未经检查的限制有关,从而导致各个组执行基于CPU和内存的DOS攻击,只需要很少的网络流量即可执行。
解决此问题的正确方法:
你真的应该切换到基于POST(或PUT)的请求数据,而不是在HTTP协议的请求头中发送那么多的数据。
答案 1 :(得分:1)
一种可能更简单的方法是在yaml配置文件中设置requestHeaderSize。以下是我们的摘录:
server:
applicationConnectors:
- type: http
maxRequestHeaderSize: 100KiB
其他可能的设置显示为here