next up previous
Next: La journalisation Up: Un serveur web : Previous: Liaison

La négociation de contenus

L'idée est que pour une même requête http, plusieurs documents peuvent être retournés. Par exemple, pour une requête http://www.mon-asso.fr, le serveur web va me retourner un document qui est à la racine du site web. Mais quel document ? L'index en français ou en anglais ? un .html ou un .txt ?

Le choix va pouvoir être effectué sur le serveur en fonction d'éléments supplémentaires dans l'entête de la requête du client. Ces éléments peuvent concerner aussi bien les langues acceptées (et celles qui sont préférées), que les types de fichiers. Voici un exemple d'entête de requête :

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

Ici, le client déclare préférer le français mais accepte l'anglais, pour les types de documents, sa préférence va aux document html mais il accepte tout autre type text, enfin pour les images il accepte autant les gif que les jpeg. Néanmoins, il ne refuse pas tout autre type de média, le cas échéant.

On appelle ressource une entité conceptuelle qui correspond à une URI, et variantes les différentes représentations possibles pour cette ressource. Le travail du serveur http est ici de fournir les caractéristiques des différentes représentations d'une ressource. S'il existe plusieurs variantes, alors la ressource est négociable.

Pour fournir une représentation de toutes les variantes possibles, il y a deux possibilités pour Apache :

Le choix final de la variante renvoyée au client s'effectue soit sur le serveur http via l'algorithme de résolution de négociation d'Apache, soit, à la demande du client, est délégué au client lui-même.


next up previous
Next: La journalisation Up: Un serveur web : Previous: Liaison
Anne Parrain 2006-11-06