- Content Negotiation
-
Content Negotiation
La négociation de contenu est un processus défini dans la spécification HTTP qui permet de fournir différentes versions d'un document électronique (ou plus généralement, une ressource informatique) à la même URL.
La négociation de contenu est employée en particulier pour l'accès à des ressources informatiques en différentes langues. La négociation de contenu apporte une méthode de gestion des langues.
Ainsi les User-Agents peuvent choisir laquelle des versions est la mieux adaptée à leurs possibilités. Une des utilisations classiques de ce mécanisme est de servir une image qui soit aussi bien du GIF et du PNG. Ainsi un User-Agent qui ne comprend pas le PNG peut toujours afficher la version en GIF. Pour résumer la façon dont cela fonctionne, on peut dire que les User-Agents sont supposés envoyer un en-tête HTTP (
Accept
) avec les différents types MIME qu'ils comprennent et avec des indications sur la manière dont ils le comprennent le mieux possible. Alors, le serveur répond avec la version de la ressource qui est la mieux adaptée aux besoins des navigateurs web.Ainsi, une ressource peut-être disponible en plusieurs représentations. Par exemple, elle peut être disponible en différentes langues ou avec différents types de médias, ou une combinaison des deux. Une solution pour sélectionner le choix le plus approprié, est de donner à l'utilisateur une page index, et le laisser choisir par exemple la partie du site web qui est dans sa langue. Cependant, il est souvent possible pour le serveur de choisir automatiquement. Celà fonctionne parce que les navigateurs peuvent envoyer, comme partie de chaque demande d'information , les représentations qu'ils préfèrent. Par exemple, un navigateur peut indiquer qu'il aimerait afficher l'information en français, si possible, sinon il le fera en anglais. Les navigateurs indiquent leurs préférences par des en-têtes dans la requête. Pour demander seulement des représentations/documents français, le navigateur devrait envoyer
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 sur l'affichage plein texte ou d'autres types textuels, et préférant le GIF ou le JPEG sur d'autres types de médias, mais permettant 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
Liens externes
- RFC 2616 – Hypertext Transfer Protocol -- HTTP/1.1 – (Section 12: Content Negotiation)
- RFC 2295 – Transparent Content Negotiation in HTTP
- Apache Content Negotiation
- Content negotiation techniques to serve XHTML as
text/html
andapplication/xhtml+xml
- XHTML content negotiation through PHP
- The variant button
Références
- Cet article en anglais est basé en partie sur this page, dont les droits sont détenus par la fondation Apache mais fourni sous une licence libre.
Catégorie : HTTP
Wikimedia Foundation. 2010.