Négociation de contenu

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

La Négociation de contenu est un mécanisme défini dans la spécification HTTP qui offre la possibilité de proposer pour une même URI, différentes versions d'un même document (ou plus généralement, une ressource). Les User-Agent peuvent ainsi choisir la version la mieux adaptée à leurs capacités. Une des utilisations classiques de ce mécanisme est de proposer une image aussi bien au format GIF que PNG. Ainsi un User-Agent qui ne peut pas afficher le format PNG peut toujours utiliser la version en GIF.

Pour résumer le fonctionnement de ce mécanisme, quand un Agent utilisateur User-Agent soumet une requête à un serveur, il informe celui-ci du type de média qu'il comprend en indiquant même un taux d'acceptabilité. Concrètement, l'agent utilisateur envoie un en-tête HTTP (Accept) avec les différents types MIME pris en charge. Alors, le serveur répond avec la version de la ressource la mieux adaptée aux capacités des navigateurs.

Ainsi, une ressource peut-être disponible dans différentes représentations, par exemple en différentes langues ou avec différents types de media, ou une combinaison des deux. Une solution pour sélectionner le choix le plus approprié est de proposer à l'utilisateur une page index en le laisser choisir, par exemple la partie du site qui est dans sa langue. Mais il est souvent possible pour le serveur de choisir automatiquement la bonne réponse. Cela est possible parce que les navigateurs transmettent des données sur les représentations qu'ils préfèrent. Par exemple, un navigateur peut indiquer qu'il aimerait afficher l'information si possible en Français, sinon (2ème choix) en Anglais. Les navigateurs indiquent leurs préférences au niveau des en-têtes de la requête. Pour demander seulement des représentations/documents français, le navigateur devrait envoyer l'information suivante :

Accept-Language: fr

Notez que cette préférence sera appliquée seulement quand il y a un choix de représentations et que celles-ci varient par langues.

Comme exemple d'une requête plus complexe, ce navigateur a été configuré pour accepter le Français et l'Anglais, mais il préfère le Français, et accepte des types de média variés, préférant le HTML pour l'affichage plein texte ou pour d'autres types textuels, et préférant le GIF ou le JPEG pour d'autres types de médias, mais autorisant aussi n'importe quel type de média en dernier recours:

Accept-Language: fr; q=1.0, en; q=0.5
         Accept: text/html; q=1.0, text/*; q=0.8, image/gif; q=0.6, image/jpeg; q=0.6, image/*; q=0.5, */*; q=0.1

Voir aussi[modifier | modifier le code]

Liens externes[modifier | modifier le code]

Références[modifier | modifier le code]

  • Cet article en français est basé en partie sur cette page, dont les droits sont détenus par la fondation Apache mais fourni sous une licence libre.