Apache HTTP Server Version 1.3
Module mod_negotiation
Ce module est implémenté dans le fichier mod_negotiation.c
, et est compilé par défaut. Il met en oeuvre la négociation de contenu.
Résumé
La négociation de contenu, ou plus précisément, la sélection de contenu, consiste en la sélection d'une version de document qui correspond le mieux aux possibilités du client, parmi un ensemble de documents. Apache dispose de deux implémentations de ce mécanisme.
- Une correspondance de type (un fichier associé à un handler
type-map
)
qui établit explicitement la liste des fichiers constituant les variantes du document.
- Une recherche "MultiViews" (activée par l'option MultiViews, par laquelle le serveur effectue une reconnaissance implicite sur le nom de fichier, et choisit parmi les résultats obtenus.
Tables de Types
Une table de type a le même format que les en-têtes de mail RFC822. Il contient une description du document sur plusieurs lignes séparées par des lignes vides, les lignes commençant par un dièse ('#') étant traitées comme des commentaires. Une description de document consiste en une série de champs d'en-tête ; Un champ d'en-tête peut déborder sur la ligne suivante à condition que cette dernière commence par un espace. L'espace de début de ligne sera détecté et les lignes seront concaténées. Un champ d'en-tête consiste en un mot clef, toujours terminé par un "deux-points", et suivi d'une valeur. Les espaces sont autorisés entre le mot-clef et la valeur, et entre les différents "mots" dans la valeur. Les mots-clefs d'en-tête autorisés sont :
- Content-Encoding:
L'encodage du fichier. Actuellement, deux encodages sont reconnus par http ; x-compress
pour les fichiers compressés, et x-gzip
pour des fichiers g-zippés.
- Content-Language:
La langue de la variante du document, sous la forme d'un code de langue standard d'Internet, tels que en
ou fr
.
- Content-Length:
La longueur du fichier, en octets. Si ce champ n'est pas présent, alors la taille effective du fichier est utilisée.
- Content-Type:
Le type de média (MIME) de ce document, avec certains attributs optionnels. Les attributs sont séparés du type de média et entre eux par des "points-virgules". La syntaxe des attributs est "nom=valeur;", parmi lesquels sont permis :
- level
Accepte un entier, qui indique la version du type de media. Pour le type text/html
la valeur par défaut est 2, autrement 0.
- qs
Accepte un nombre flottant entre 0,0 et 1,0. Il donne une "note" de 'qualité' de la variante.
Exemple: Content-Type: image/jpeg; qs=0.8
- URI:
Le chemin d'accès vers le fichier contenant la variante, relativement à la position de la table de types.
MultiViews
Une recherche par MultiViews est activée par l'Option MultiViews. Lorsque le serveur reçoit une requête visant /some/dir/foo
et /some/dir/foo
n'existe pas, alors le serveur cherche dans le répertoire tous les fichiers nommés foo.*
, et met en place une table de media qui désigne tous ces fichiers, en leur attribuant le même type de media et encodage de contenu que si un client les avaient adressés directement. Il choisit ensuite dans cette table celui qui correspond le mieux aux caractéristiques du client.
Directives
Syntaxe : CacheNegotiatedDocs
Contexte : configuration serveur
Statut : Base
Module : mod_negotiation
Compatibilité : CacheNegotiatedDocs n'est disponible qu'à partir de la version 1.1 d'Apache.
Si définie, elle permet aux documents issus d'une procédure de négociation de contenu d'être cachés par un serveur proxy. Dans ce cas, il sera possible que des clients situés en amont du proxy récupèrent des versions de documents qui ne sont pas les mieux adaptés à leurs possibilités, mais préserve les avantages du cache.
Cette directive ne s'applique qu'aux requêtes provenant de navigateurs supportant HTTP/1.0.
HTTP/1.1 contrôle beaucoup mieux le mécanisme de cache pour des documents négociés, et cette directive n'aura aucun effet sur les réponses données aux requêtes de format HTTP/1.1.
Syntaxe : LanguagePriority mime-lang mime-lang...
Contexte : configuration serveur, hôtes virtuels, répertoire, .htaccess
Surcharge : FileInfo
Statut : Base
Module : mod_negotiation
La directive LanguagePriority détermine la précédence des variantes de langues par défaut pour la recherche MultiViews, au cas où le client n'exprime pas de préférence. La liste de mime-lang est donné par préférence décroissante. Exemple :
LanguagePriority fr en de
A une requête visant foo.html
, pour lequel les deux variantes foo.html.en
et foo.html.de
existent, mais dans laquelle le navigateur n'a exprimé aucune préférence de langue, il sera répondu par le document foo.html.en
.
Notez que cette directive n'a d'effet que si le 'meilleur' langage ne peut être déterminé par d'autres moyens. Ceci veut dire que cette directive n'a pas d'influence sur des requêtes HTTP/1.1 correctement implémentées .
Apache HTTP Server Version 1.3