Qual é o tamanho máximo da URL no Tomcat?

43

E é configurável? Posso configurar o Tomcat para que um URL com, digamos, 200 K de parâmetros de consulta, passe com êxito para o servlet contido?

Sim, eu sei que se deve usar o POST quando você tem muitos dados; essa é uma opção menos agradável neste caso específico. O aplicativo contido (um mecanismo de pesquisa) espera que uma solicitação GET realize uma pesquisa.

    
por Michael Gundlach 20.08.2009 / 17:42

4 respostas

57

Você pode editar a entrada do Conector HTTP / 1.1 do tomcat / conf / server.xml e adicionar um maxHttpHeaderSize="65536" para aumentar do máximo padrão de 8K ou mais para 64K. Eu imagino que você poderia aumentar este número tão alto quanto necessário, mas 64K é suficiente para as minhas necessidades no momento, então eu não tentei isso.

<Connector port="8080" maxHttpHeaderSize="65536" protocol="HTTP/1.1" ... />
    
por 24.08.2009 / 19:18
5

O comprimento de uma solicitação HTTP GET não é imposto pelo RFC2616 , conforme a Microsoft informa seu IE max página de suporte ao tamanho .

Portanto, o comprimento máximo de GET é um problema relacionado ao cliente (navegador) . Se o seu aplicativo for usado por pessoas que você pode forçar a usar um determinado navegador, você pode simplesmente descobrir qual é o comprimento que esse navegador suporta.

Em todos os casos, sugiro dar uma olhada na página Wikypedia sobre esses problemas relacionados ao navegador na sequência de consulta ( a parte do pedido trazendo parâmetros para aplicativos do lado do servidor, aquele que segue o "?" eventualmente presente em uma requisição.

Claro que talvez o tomcat também coloque um limite no lado do servidor. RFC diz:

Servers MUST be able to handle the URI of any resource they serve, and SHOULD be able to handle URIs of unbounded length if they provide GET-based forms that could generate such URIs. A server SHOULD return 414 (Request-URI Too Long) status if a URI is longer than the server can handle (see section 10.4.15).

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 um muito longo, dando o erro e diminuindo a metade. Em seguida, use o método de bissecção para encontrar rapidamente o valor exato.

    
por 20.08.2009 / 17:59
2

Para o conector AJP, você precisa ajustar o atributo packetSize :

<Connector port="8009" 
    protocol="AJP/1.3" 
    packetSize="65536" />
    
por 26.02.2016 / 13:34
1

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" / >

    
por 08.04.2011 / 13:37