From: Lucien Gentis La négociation de contenu, ou plus précisément la sélection de
- contenu, est la sélection parmi plusieurs documents disponibles, du
- document qui "colle" au plus près des possibilités du client. Pour y
- parvenir, deux méthodes sont employées. La négociation de contenu, ou plus précisément la sélection de
+ contenu, est la sélection parmi plusieurs documents disponibles, du
+ document qui "colle" au plus près des possibilités du client. Pour y
+ parvenir, deux méthodes sont employées. Une table de correspondances de types possède un format similaire
- à celui des en-têtes de messagerie RFC822. Elle contient des
- descriptions de documents séparées par des lignes vides, toute ligne
- commençant par un dièse ('#') étant considérée comme un
+ Une table de correspondances de types possède un format similaire
+ à celui des en-têtes de messagerie RFC822. Elle contient des
+ descriptions de documents séparées par des lignes vides, toute ligne
+ commençant par un dièse ('#') étant considérée comme un
commentaire. Une description de document comporte plusieurs
- enregistrements d'en-têtes ; chaque enregistrement peut être réparti
- sur plusieurs lignes à condition que les lignes supplémentaires
+ enregistrements d'en-têtes ; chaque enregistrement peut être réparti
+ sur plusieurs lignes à condition que les lignes supplémentaires
commencent par un ou plusieurs espaces. Lors du traitement, les
- espaces de début de ligne seront supprimés et les lignes
- concaténées. L'enregistrement d'un en-tête comprend un mot-clé qui
- se termine toujours par un caractère "deux-points" ':', suivi d'une
- valeur. Les espaces sont autorisés entre le nom d'en-tête et sa
- valeur, ainsi qu'entre les différents éléments de la valeur. Les
- en-têtes autorisés sont :
-
type-map
) qui contient une liste
- explicite des fichiers contenant les différentes variantes.Multiviews
), où le
- serveur effectue une recherche de correspondance de modèle de nom
- de fichier implicite, et fait son choix parmi les résultats.Multiviews
), où le
+ serveur effectue une recherche de correspondance de modèle de nom
+ de fichier implicite, et fait son choix parmi les résultats.
Content-Encoding:
x-compress
pour les fichiers compressés
- avec compress, et x-gzip
pour les fichiers compressés
- avec gzip. Le préfixe x-
est ignoré lors des
+ les codages x-compress
pour les fichiers compressés
+ avec compress, et x-gzip
pour les fichiers compressés
+ avec gzip. Le préfixe x-
est ignoré lors des
comparaisons de codages.Content-Language:
en
correspond à l'anglais. Si la variante
- contient plusieurs langages, ils sont séparés par des
+ exemple, en
correspond à l'anglais. Si la variante
+ contient plusieurs langages, ils sont séparés par des
virgules.Content-Length:
Content-Type:
nom=valeur
. Les paramètres
+ avec des paramètres optionnels. Les paramètres sont séparés du
+ type de médium ainsi qu'entre eux par un point-virgule, et
+ possèdent la syntaxe nom=valeur
. Les paramètres
courants sont :
level
text/html
, la valeur par défaut est 2, sinon
+ text/html
, la valeur par défaut est 2, sinon
0.qs
qs
sont donc spécifiques à une certaine
+ qs
sont donc spécifiques à une certaine
ressource.URI:
Body:
Considérons une ressource, document.html
, disponible
- en anglais, en français et en allemand. Les fichiers correspondants
+
Considérons une ressource, document.html
, disponible
+ en anglais, en français et en allemand. Les fichiers correspondants
se nomment respectivement document.html.en
,
document.html.fr
, et document.html.de
. Le
fichier de correspondances de types se nommera
@@ -180,8 +180,8 @@ contenu
-
Ces quatre fichiers doivent se trouver dans le même répertoire,
- et le fichier .var
doit être associé au gestionnaire
+
Ces quatre fichiers doivent se trouver dans le même répertoire,
+ et le fichier .var
doit être associé au gestionnaire
type-map
via une directive
A l'arrivée d'une requête pour la ressource +
A l'arrivée d'une requête pour la ressource
document.html.var
, la variante de
- document.html
qui correspond le mieux à la préference
- de langage spécifiée dans l'en-tête de la requête de l'utilisateur
+ document.html
qui correspond le mieux à la préference
+ de langage spécifiée dans l'en-tête de la requête de l'utilisateur
Accept-Language
sera choisie.
Si Multiviews
est activée, et si document.html
va
+
Si Multiviews
est activée, et si document.html
va
rechercher document.html.var
, et continuer la
- négociation avec le gestionnaire explicite type-map.
D'autres directives de configuration, comme document.html
avec
document.html.var
.
Une recherche Multivues est activée par l'Multiviews
. Si le
- serveur reçoit une requête pour /un/répertoire/foo
, et
- si /un/répertoire/foo
n'existe pas, le serveur parcourt
- le répertoire à la recherche de tous les fichiers de nom
- foo.*
, et simule véritablement une correspondance de
- type qui nomme tous ces fichiers en leur assignant les mêmes type
- de média et codage de contenu qu'ils auraient eus si le client avait
+ serveur reçoit une requête pour /un/répertoire/foo
, et
+ si /un/répertoire/foo
n'existe pas, le serveur parcourt
+ le répertoire à la recherche de tous les fichiers de nom
+ foo.*
, et simule véritablement une correspondance de
+ type qui nomme tous ces fichiers en leur assignant les mêmes type
+ de média et codage de contenu qu'ils auraient eus si le client avait
requis l'un d'entre eux avec son nom complet. Il choisit ensuite le
fichier qui correspond le mieux au profile du client, puis renvoie
le document.
La directive
Si elle est définie à "on", cette directive permet la mise en +
Si elle est définie à "on", cette directive permet la mise en cache au niveau des serveurs mandataires des documents dont le - contenu a été négocié. Le processus de mise en cache sera alors plus - efficace, mais des clients se trouvant derrière le mandataire + contenu a été négocié. Le processus de mise en cache sera alors plus + efficace, mais des clients se trouvant derrière le mandataire seront alors susceptibles de se voir servir des versions de - documents qui ne correspondent pas forcément à leurs attentes.
+ documents qui ne correspondent pas forcément à leurs attentes. -Cette directive ne s'applique qu'aux requêtes en provenance de - navigateurs HTTP/1.0. HTTP/1.1 fournit un bien meilleur contrôle de - la mise en cache des documents au contenu négocié, et cette - directive n'a aucun effet sur les réponses aux requêtes +
Cette directive ne s'applique qu'aux requêtes en provenance de + navigateurs HTTP/1.0. HTTP/1.1 fournit un bien meilleur contrôle de + la mise en cache des documents au contenu négocié, et cette + directive n'a aucun effet sur les réponses aux requêtes HTTP/1.1.
La directive
ForceLanguagePriority Prefer
utilise la directive
- LanguagePriority
pour servir le résultat d'un choix
- unique, au lieu de renvoyer un résultat HTTP 300 (MULTIPLE CHOICES),
- lorsque que plusieurs choix équivalents sont disponibles. Par
- exemple, avec les deux directives ci-dessous, si l'en-tête
- Accept-Language
de l'utilisateur assigne à
- en
et de
une qualité de .500
- (les deux langages sont également acceptables), alors c'est la
- première variante acceptable de langue en
qui sera
+ LanguagePriority
pour servir le résultat d'un choix
+ unique, au lieu de renvoyer un résultat HTTP 300 (MULTIPLE CHOICES),
+ lorsque que plusieurs choix équivalents sont disponibles. Par
+ exemple, avec les deux directives ci-dessous, si l'en-tête
+ Accept-Language
de l'utilisateur assigne Ã
+ en
et de
une qualité de .500
+ (les deux langages sont également acceptables), alors c'est la
+ première variante acceptable de langue en
qui sera
servie.
ForceLanguagePriority Fallback
utilise la directive
Accept-Language
de l'utilisateur ne mentionne
- que les réponses de langage es
, et si aucune variante
- dans cette langue n'est trouvée, c'est la première variante de la
- liste définie par la directive es
, et si aucune variante
+ dans cette langue n'est trouvée, c'est la première variante de la
+ liste définie par la directive
Les deux options, Prefer
et Fallback
,
- peuvent être spécifiées, de façon à ce que la variante servie soit
- la première variante qui convient définie par la directive
+ peuvent être spécifiées, de façon à ce que la variante servie soit
+ la première variante qui convient définie par la directive
La directive
Dans le cas d'une requête pour foo.html
, si
+
Dans le cas d'une requête pour foo.html
, si
foo.html.fr
et foo.html.de
existent, et si
- le client n'a pas formulé de préférences, c'est le fichier
- foo.html.fr
qui sera renvoyé.
foo.html.fr
qui sera renvoyé.
Notez que cette directive n'a d'effet que si le 'meilleur'
- langage n'a pas pu être déterminé d'une autre manière ou si la
+ langage n'a pas pu être déterminé d'une autre manière ou si la
valeur de la directive None
. En général, c'est le client qui
- détermine le langage préféré, non le serveur.
None
. En général, c'est le client qui
+ détermine le langage préféré, non le serveur.