2010-03-29 5 views
2

Je suis tombé sur un problème où une application Web a réussi à créer un cookie sur le client, qui, lorsque soumis par le client à Apache, provoque Apache à retourner le suivant:Comment faire pour supprimer un grand cookie qui provoque Apache à 400

HTTP/1.1 400 Bad Request 
Date: Mon, 08 Mar 2010 21:21:21 GMT 
Server: Apache/2.2.3 (Red Hat) 
Content-Length: 7274 
Connection: close 
Content-Type: text/html; charset=iso-8859-1 

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>400 Bad Request</title> 
</head><body> 
<h1>Bad Request</h1> 
<p>Your browser sent a request that this server could not understand.<br /> 
Size of a request header field exceeds server limit.<br /> 
<pre> 
Cookie: ::: A REALLY LONG COOKIE ::: </pre> 
</p> 
<hr> 
<address>Apache/2.2.3 (Red Hat) Server at www.foobar.com Port 80</address> 
</body></html> 

Après avoir examiné la question, il semblerait que l'application Web a réussi à créer un cookie très long, plus de 7000 caractères. Maintenant, ne me demandez pas comment l'application web était capable de faire cela, j'étais sous l'impression que les navigateurs étaient censés empêcher cela. J'ai réussi à trouver une solution pour empêcher les cookies de redevenir incontrôlables.

Le problème que j'essaie de résoudre est de savoir comment réinitialiser le grand cookie sur le client si chaque fois que le client essaie de soumettre une requête à Apache, Apache renvoie une erreur 400 client? J'ai essayé d'utiliser la directive ErrorDocument, mais il semble qu'Apache reste actif sur la requête avant d'atteindre toute erreur de gestion personnalisée.

+0

Je suis sûr que vous ne vouliez pas donner l'impression que le titre de votre question était un euphémisme mais cela m'a fait sourire! :-) –

+0

Oui, le phrasé est un peu gênant, je ne savais pas trop comment le mettre. –

Répondre

1

Oh mon dieu! Je pense que vous devrez augmenter l'option de configuration LimitRequestFieldSize dans le httpd.conf d'Apache pour aller plus loin, de sorte que vous pouvez aller aussi loin que d'exécuter le script côté serveur. Assurez-vous de nettoyer les biscuits le plus rapidement possible avant qu'ils ne repoussent!

+0

Pop up LimitRequestFieldSize à 10000, va le laisser là pour quelques mois, j'espère que cela attrape la plupart des clients. –

Questions connexes