E é configurável? Posso configurar o Tomcat para que um URL com, digamos, 200K de parâmetros de consulta passe com êxito para o servlet contido?
Sim, eu sei que é preciso usar o POST quando você tiver muitos dados; essa é uma opção menos agradável nesse caso em particular. O aplicativo contido (um mecanismo de pesquisa) espera que uma solicitação GET realize uma pesquisa.
server.xml
configuração, sem perceber, e de repente atingimos. Problema doloroso: nada foi registrado sobre isso, as conexões foram silenciosamente eliminadas (não me lembro mais do status HTTP). Eu tropecei na documentação em tomcat.apache.org/tomcat-5.5-doc/config/http.html antes, no entanto, não associei omaxHttpHeaderSize
nome nem a descrição a eles relacionados aos parâmetros de consulta de solicitação GET.O comprimento de uma solicitação HTTP GET não é imposto pelo RFC2616 , como a Microsoft reporta para sua página de suporte de comprimento máximo do IE .
Portanto, o comprimento máximo de GET é um problema relacionado ao cliente (navegador) . Se o seu aplicativo for usado por pessoas, você pode forçar a usar um determinado navegador, basta encontrar qual é a duração desse suporte ao navegador.
Em todos os casos, sugiro uma olhada na página da Wikypedia sobre esses problemas relacionados ao navegador na string Query (a parte da solicitação que traz parâmetros para aplicativos do lado do servidor, a que segue o "?" Eventualmente presente em uma solicitação.
É claro que talvez o tomcat também coloque um limite no lado do servidor. A RFC diz:
para que você possa testar facilmente se o Tomcat tem um limite e descobrir qual é esse limite usando simplesmente solicitações diferentes, começando com uma muito longa, fornecendo o erro e diminuindo pela metade. Em seguida, use o método de bissecção para encontrar rapidamente o valor exato.
fonte
Para o conector AJP, você precisa ajustar o
packetSize
atributo:fonte
ProxyIOBufferSize 65536
na sua configuração httpd.Você pode alterar a configuração no servidor Tomcat (.. \ Tomcat 6.0 \ conf \ server.xml)
<Porta do conector = "8983" maxHttpHeaderSize = "100000" protocol = "HTTP / 1.1" connectionTimeout = "20000" redirectPort = "8443" />
fonte