6 votes

Compression HTTP dans IIS 6.0 causant des problèmes avec certains utilisateurs

Nous recevons quelques appels clients sporadiques (moins de 0,1 % de nos utilisateurs) se plaignant de ne pas pouvoir accéder au site web de mon entreprise - soit ils obtiennent une page blanche (s'ils utilisent IE), soit une erreur d'encodage de contenu" qui indique que la page utilise une forme de compression invalide ou non prise en charge (s'ils utilisent FireFox).

La suspicion actuelle est que lorsqu'une requête de navigateur HTTP 1.1 passe par un proxy HTTP 1.0, nous renvoyons la requête de navigateur HTTP 1.1 compressée, qui est ensuite altérée par le proxy HTTP 1.0.

Le site web est un serveur Tomcat 4.2.2 en backend avec un serveur IIS 6.0 en front-end avec GZIP et DEFLATE activés sur les serveurs IIS.

Quelqu'un a-t-il déjà rencontré ce type d'erreur ? Y a-t-il une solution recommandée pour éviter de perturber les anciennes implémentations de proxy ?

Édition : Nous pouvons reproduire le problème avec une configuration par défaut de squid-2.5, cependant les versions plus récentes de squid semblent fonctionner parfaitement.

4voto

gharper Points 5315

D'accord, je pense que nous avons compris...

Côté client, Squid 2.5 et les versions antérieures ne comprennent pas "Transfer-Encoding : chunked", donc il livre chaque fragment en tant que demande client entière. Comme il s'agit d'un seul fragment de la demande compressée entière, c'est des données invalides et ne peut pas être lu par le navigateur. (Je ne suis pas sûr si c'est un problème avec d'autres proxys)

Côté serveur, IIS envoie toujours un encodage chunked pour la compression dynamique (puisque IIS ne met pas en cache les réponses d'application, il doit compresser chaque réponse à la volée, d'où l'encodage chunked).

La seule façon que nous avons trouvé pour résoudre cela est de désactiver complètement la compression pour les clients HTTP 1.0 et de compresser uniquement pour les réponses HTTP 1.1. L'inconvénient est que toute personne derrière un proxy qui envoie des requêtes 1.0 ne recevra pas de données compressées et le site mettra 0,5 à 1 seconde de plus à charger pour ces utilisateurs.

Modifications apportées dans le fichier metabase.xml :

Si quelqu'un a une meilleure solution, veuillez me le faire savoir !

1voto

Warren Blanchet Points 881

Si cela est reproductible, je commencerais par examiner les en-têtes de réponse envoyées au client pour m'assurer qu'il y a un proxy 1.0 quelque part dans le flux de requête/réponse comme indiqué dans l'en-tête de réponse Via:. Sinon, il y a de fortes chances que vous soyez sur la mauvaise piste. Les proxies doivent insérer cet en-tête et le protocole qu'ils utilisent dans les deux sens du flux de requête/réponse.

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