Pourquoi ne peut-navigateur envoyer gzip demande?
Si le serveur web peut envoyer gzip réponse, pourquoi ne peut-navigateur envoyé gzip demande?
Vous devez vous connecter pour publier un commentaire.
Si le serveur web peut envoyer gzip réponse, pourquoi ne peut-navigateur envoyé gzip demande?
Vous devez vous connecter pour publier un commentaire.
Le client et le serveur se mettre d'accord sur la façon de communiquer; une partie de cette est de savoir si la communication peut être comprimé. HTTP a été conçu comme une demande/réponse modèle, et la création originale a été presque certainement envisagé d'avoir toujours de petites demandes et potentiellement de grandes réponses. La Compression n'est pas nécessaire à mettre en œuvre HTTP, il y a des serveurs et des clients qui ne le supportent pas.
La compression HTTP est mis en œuvre par le client en disant: il peut prendre en charge la compression, et si le serveur voit cela dans la demande et il prend en charge la compression, il peut compresser la réponse. Pour compresser de la demande, le client devra disposer d'un "pré-demande" que réellement négocié que la demande serait faite comprimé OU il aurait à exiger de compression comme un codage pris en charge pour TOUTES les demandes.
* Mise à JOUR de Février '17 *
Cela fait 8 ans, mais comme @Phil_1984_ notes, une 3ème solution possible serait pour le client et le serveur pour négocier la compression support et ensuite l'utiliser pour les demandes suivantes. En fait, des choses comme HSTS travail exactement de cette façon, avec la mise en cache du client que le serveur s'attend à seulement parler TLS et ignorer tout chiffré des liens. HTTP a été explicitement conçu pour être apatride, mais nous avons déménagé au-delà, à ce point.
Un client ne peut pas savoir à l'avance que le serveur serait de comprendre un format gzip demande, mais le serveur peut savoir ce que le client accepte une.
Il pourrait, si on peut garantir que le serveur de l'accepter. Cela pourrait signifier à l'aide d'une des OPTIONS de demande.
Il y a beaucoup de choses que les navigateurs web pourrait le faire (par exemple, le pipelining) qu'ils ne le font pas. Navigateur Web développeurs doivent prendre en compte la compatibilité des conséquences d'un changement.
Dans un environnement hétérogène, il y a beaucoup de différents serveurs web et des configurations. Faire un changement à la façon dont un client pourrait briser certains d'entre eux.
Peut-être seulement 1% des serveurs pourraient accepter gzippé demandes, mais peut-être certains de ceux de la publicité qu'ils font, mais ne peut pas correctement l'accepter - les utilisateurs pourraient donc être refusée dès le téléchargement de fichiers sur ces sites.
Historiquement il y a eu beaucoup de débris de client /serveur implémentations - pour une longue période, au format gzip réponses ont été brisées dans les principaux navigateurs web (heureusement ceux-ci sont maintenant pour la plupart disparu).
Donc, si vous voulez retrouver avec des listes noires des user-agents ou des serveurs (ou les noms de domaine) où ces options sont automatiquement mis à l'arrêt, qui est méchant.
Parce qu'il ne sait pas que le serveur peut accepter. Une transaction HTTP a une seule requête envoyée par le client suivie d'une réponse. Une des choses que le client envoie est ce que le codage/de compression, il peut prendre en charge. Le serveur peut ensuite décider de la façon de compresser la réponse. Le client n'a pas ce luxe.
Si vous écrivez une application web, je suis en supposant que vous êtes en contrôle de ce qui est envoyé au client et ce qui est renvoyé par le client.
Il serait assez facile d'écrire un gzip implémentation en javascript, qui comprime le post de données envoyées vers le serveur. Le serveur pourrait avoir un filtre (j2ee terme), qui ne connaît client de l'envoi de données compressées, ce filtre permet de décompresser les données et les transmet ensuite les données de la servlet (ou classes d'action de Struts) que lire les données comme normal par exemple la requête.getParameter(...).
Cela semble parfaitement logique et faisable si vous êtes dans le contrôle. Comme d'autres postes de mentionner, on ne pouvait pas compter sur le navigateur pour le faire automatiquement, mais puisque vous êtes en train de rédiger les pages web, vous pouvez obtenir le navigateur pour faire la compression que vous êtes après (avec un peu de travail).
Andy.
HTTP est conçu de cette façon:
MAIS DANS CE modèle, le client ne peut pas envoyer un comprimé demandes, car il ne sait pas si le serveur se comprendre à l'avance.