Tomcat 和 Grizzly (GlassFish 3) 中的 URI 是否有最大长度(不是默认值)?
我想创建一个 RESTful API,它应该能够接收大的 GET 请求。
Tomcat 和 Grizzly (GlassFish 3) 中的 URI 是否有最大长度(不是默认值)?
我想创建一个 RESTful API,它应该能够接收大的 GET 请求。
在 Tomcat 中,它maxHttpHeaderSize
可以配置为server.xml
. 其默认值为 8192 字节 (8KB)。这大约是相同数量的未编码 ASCII 字符。由于 Glassfish v3 在后台使用 Tomcat,因此配置设置是相同的。Grizzly 只是一个 HTTP 连接器实现,可以在 Glassfish 和 Tomcat 中使用。抽象配置不应依赖于使用的 HTTP 连接器实现。
也就是说,还有另一个限制需要考虑,即客户端/代理端的限制。甚至 HTTP 1.1 规范也对此提出警告,这里是第 3.2.1 章的摘录:
注意:服务器应该谨慎对待超过 255 字节的 URI 长度,因为一些较旧的客户端或代理实现可能无法正确支持这些长度。
限制在 MSIE 和 Safari 中约为 2KB,在 Opera 中约为 4KB,在 Firefox 中约为 8KB。因此,我们可以假设 8KB 是可能的最大长度,而 2KB 是在服务器端依赖的更实惠的长度,而 255 字节是假设整个 URL 都会进入的最安全长度。