49 votes

Quelle est la longueur maximale de l'URL dans Tomcat ?

Est-il configurable ? Puis-je configurer Tomcat de manière à ce qu'une URL contenant, disons, 200 000 paramètres de requête soit transmise avec succès au servlet qu'elle contient ?

Oui, je sais qu'il faut utiliser POST lorsque l'on a beaucoup de données ; c'est une option moins agréable dans ce cas particulier. L'application contenue (un moteur de recherche) attend une requête GET pour effectuer une recherche.

70voto

Aaron Smith Points 191

Vous pouvez modifier l'entrée HTTP/1.1 Connector de tomcat/conf/server.xml et ajouter maxHttpHeaderSize="65536" pour passer du maximum par défaut de 8K à 64K. J'imagine qu'il est possible d'augmenter ce nombre autant que nécessaire, mais 64K me suffit pour l'instant et je n'ai donc pas essayé.

<Connector port="8080" maxHttpHeaderSize="65536" protocol="HTTP/1.1" ... />

6voto

drAlberT Points 10812

Longueur d'une requête HTTP GET n'est pas appliqué par la RFC2616 , comme l'indique Microsoft dans son rapport sur les Page d'aide sur la longueur maximale de l'IE .

Ainsi, la longueur maximale de GET est un problème lié au client (navigateur) . Si votre application est utilisée par des personnes que vous pouvez forcer à utiliser un navigateur donné, vous pouvez simplement déterminer la longueur de ce navigateur.

Dans tous les cas, je suggère de consulter le Wikypedia sur les problèmes liés aux navigateurs concernant la chaîne de requête (la partie de la requête apportant les paramètres pour les applications côté serveur, celle qui suit le " ?" éventuellement présent dans une requête.

Bien sûr, il est possible que Tomcat impose également une limite, du côté du serveur. Le RFC dit :

Les serveurs DOIVENT être capables de gérer de toute ressource qu'ils servent et DEVRAIENT être en mesure de traiter des URI d'une longueur s'ils fournissent des formulaires basés sur GET qui peuvent générer de tels URI. A devrait renvoyer le statut 414 (Request-URI Too Long) si un URI est plus long est plus long que ce que le serveur peut gérer (voir section 10.4.15).

Vous pouvez donc facilement tester si Tomcat a une limite et trouver cette limite en utilisant simplement différentes requêtes, en commençant par une requête très longue qui donne l'erreur et en diminuant de moitié. Utilisez ensuite la méthode de bissection pour trouver rapidement la valeur exacte.

2voto

1615903 Points 124

Pour le connecteur AJP, vous devez ajuster le packetSize attribut :

<Connector port="8009" 
    protocol="AJP/1.3" 
    packetSize="65536" />

1voto

Thalaiselvam Points 19

Vous pouvez modifier la configuration au niveau du serveur Tomcat ( \Tomcat 6.0 \conf\server.xml )

< Connector port="8983" maxHttpHeaderSize="100000" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X