279 votes

HTTP 1.0 vs 1.1

Quelqu'un pourrait me donner un bref aperçu des différences entre le protocole HTTP 1.0 et HTTP 1.1? J'ai passé un certain temps à la fois de la Rfc, mais n'ont pas été en mesure de tirer beaucoup de différence entre eux. Wikipédia dit ceci:

HTTP/1.1 (1997-1999)

Version actuelle; les connexions persistantes activé par défaut et fonctionne bien avec des mandataires. Prend également en charge la demande de canalisation, permettant à de multiples demandes à être envoyé dans le même temps, permettant au serveur de se préparer pour la charge de travail et de transférer les ressources demandées plus vite le client.

Mais cela ne veut pas dire beaucoup pour moi. Je réalise que c'est un peu compliqué, donc je ne suis pas attendre une réponse, mais quelqu'un peut-il me donner un bref aperçu des différences à un niveau inférieur? Par cela, je veux dire que je suis à la recherche pour l'info, j'aurais besoin de savoir pour mettre en œuvre un serveur HTTP ou de l'application.

Je me rends compte que cela peut être un peu compliqué (basé sur ce que je sais à propos de HTTP à partir de maintenant), donc je ne suis pas nécessairement à la recherche pour une réponse complète. Je suis vraiment de plus à la recherche pour un coup de pouce dans la bonne direction afin que je puisse le comprendre sur mon propre.

391voto

Brian R. Bondy Points 141769

Prise en charge du Proxy et le champ Hôte:

HTTP 1.1 requis en-tête d'Hôte par spec.

HTTP 1.0 n'a pas officiellement besoin d'un en-tête d'Hôte, mais il ne fait pas de mal pour en ajouter un, et de nombreuses applications (par procuration) s'attendent à voir l'en-tête d'Hôte, indépendamment de la version du protocole.

Exemple:

GET / HTTP/1.1
Host: www.blahblahblahblah.com

Cet en-tête est utile, car elle permet d'acheminer un message par le biais de serveurs proxy, et aussi parce que votre serveur web peut distinguer entre les différents sites sur le même serveur.

Donc, cela signifie que si vous avez blahblahlbah.com et helohelohelo.com les deux pointant vers la même IP. Votre serveur web peut utiliser le champ Hôte de distinguer le site de la machine client veut.

Les connexions persistantes:

HTTP 1.1 vous permet également d'avoir des connexions persistantes, ce qui signifie que vous pouvez avoir plus d'une requête/réponse sur la même connexion HTTP.

En HTTP 1.0 vous deviez ouvrir une nouvelle connexion pour chaque paire de requête/réponse. Et après chaque réponse, la connexion sera fermée. Cela a conduit à certains grands problèmes d'efficacité en raison de TCP Démarrage Lent.

Méthode des OPTIONS:

HTTP/1.1 introduit la méthode des OPTIONS. Un client HTTP pouvez utiliser cette méthode pour déterminer les capacités du serveur HTTP. Il est surtout utilisé pour l'Origine de la Croix de Partage de Ressources dans les applications web.

La mise en cache:

HTTP 1.0, avec le soutien pour la mise en cache via l'en-tête if-Modified-since.

HTTP 1.1 étend sur la mise en cache de soutien beaucoup de choses en utilisant quelque chose appelé "balise d'entité'. Si 2 ressources sont les mêmes, alors ils ont la même entité balises.

HTTP 1.1 ajoute également l'if-Unmodified-Since, Si-Match, Si-None-Match conditionnel en-têtes.

Il y a aussi des ajouts complémentaires relatives à la mise en cache comme l'entête Cache-Control.

100 Continuent d'état:

Il y a un nouveau code de retour HTTP/1.1 100 Continuent. C'est pour empêcher un client d'envoyer une demande importante lorsque que le client n'est même pas sûr si le serveur peut traiter la demande, ou est autorisé à traiter la demande. Dans ce cas, le client envoie uniquement les en-têtes, et le serveur indique au client 100 Continuer, aller de l'avant avec le corps.

Beaucoup plus:

  • L'authentification Digest et l'authentification du proxy
  • Supplémentaire, de nouveaux codes d'état
  • Encodage de transfert en bloc
  • En-tête de connexion
  • Renforcée de la compression
  • Beaucoup de beaucoup plus.

28voto

Kev Points 60744

C'est un assez bon résumé des principales différences:

http://www.research.att.com/~bala/papers/h0vh1.html

12voto

Julian Reschke Points 12698

11voto

Diomidis Spinellis Points 8417

Pour trivial applications (par exemple, de façon sporadique de la récupération d'une valeur de température à partir d'un web-enabled thermomètre) HTTP 1.0 est bien pour un client et un serveur. Vous pouvez écrire un bare-bones embase HTTP 1.0 client ou serveur dans environ 20 lignes de code.

Pour les scénarios plus complexes HTTP 1.1 est le chemin à parcourir. Attendre 3 à 5 fois augmentation de la taille du code pour traiter les subtilités les plus complexes protocole HTTP 1.1. La complexité provient principalement, parce que en HTTP 1.1, vous aurez besoin de créer, d'analyser et de répondre aux divers en-têtes. Vous pouvez protéger votre application à partir de cette complexité par avoir un client HTTP de la bibliothèque, de serveur ou de l'utilisation d'un serveur d'applications web.

8voto

Troy J. Farrell Points 827

Un problème de compatibilité clé est la prise en charge des connexions persistantes . J'ai récemment travaillé sur un serveur qui "supportait" HTTP / 1.1, mais n'a pas réussi à fermer la connexion quand un client a envoyé une requête HTTP / 1.0. Lors de l'écriture d'un serveur prenant en charge HTTP / 1.1, assurez-vous qu'il fonctionne également bien avec les clients HTTP / 1.0 uniquement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X