Tomcat 和 Grizzly (GlassFish 3) 中的 URI 是否有最大长度(不是默认值)?
我想创建一个应该能够接收大 GET 请求的 RESTful API。
最佳答案
在 Tomcat 中,它可以配置为 HTTP connector 的 maxHttpHeaderSize
属性server.xml
中的元素。其默认值为 8192 字节 (8KB)。这与未编码的 ASCII 字符的数量大致相同。由于 Glassfish v3 在底层使用 Tomcat,因此配置设置是相同的。 Grizzly 只是一个 HTTP 连接器实现,可以在 Glassfish 和 Tomcat 中使用。抽象配置不应依赖于所使用的 HTTP 连接器实现。
也就是说,还有另一个限制需要考虑,即客户端/代理端的限制。即使是 HTTP 1.1 规范也对此发出警告,这里是 chapter 3.2.1 的摘录:
Note: Servers ought to be cautious about depending on URI lengths above 255 bytes, because some older client or proxy implementations might not properly support these lengths.
限制在 MSIE 和 Safari 中约为 2KB,在 Opera 中约为 4KB,在 Firefox 中约为 8KB。因此,我们可以假设 8KB 是最大可能的长度,2KB 是服务器端依赖的更经济的长度,255 字节是最安全的长度,假设整个 URL 都将进入。
关于java - Grizzly (GlassFish) 和 Tomcat 中的最大 URI 长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2063666/