1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
4        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5              This file is generated from xml source: DO NOT EDIT
6        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7      -->
8<title>N�gociation de contenu - Serveur Apache HTTP</title>
9<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11<link href="/style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="/style/css/prettify.css" />
12<script src="/style/scripts/prettify.min.js" type="text/javascript">
13</script>
14
15<link href="/images/favicon.ico" rel="shortcut icon" /></head>
16<body id="manual-page"><div id="page-header">
17<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">Glossaire</a> | <a href="/sitemap.html">Plan du site</a></p>
18<p class="apache">Serveur Apache HTTP Version 2.4</p>
19<img alt="" src="/images/feather.gif" /></div>
20<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
21<div id="path">
22<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.4</a></div><div id="page-content"><div id="preamble"><h1>N�gociation de contenu</h1>
23<div class="toplang">
24<p><span>Langues Disponibles: </span><a href="/en/content-negotiation.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
25<a href="/fr/content-negotiation.html" title="Fran�ais">&nbsp;fr&nbsp;</a> |
26<a href="/ja/content-negotiation.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
27<a href="/ko/content-negotiation.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
28<a href="/tr/content-negotiation.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</a></p>
29</div>
30
31
32    <p>Apache HTTPD supporte la n�gociation de
33    contenu telle qu'elle est d�crite
34    dans la sp�cification HTTP/1.1. Il peut choisir la meilleure repr�sentation
35    d'une ressource en fonction des pr�f�rences du navigateur pour ce qui
36    concerne le type de media, les langages, le jeu de caract�res et son
37    encodage. Il impl�mente aussi quelques fonctionnalit�s pour traiter de
38    mani�re plus intelligente les requ�tes en provenance de navigateurs qui
39    envoient des informations de n�gociation incompl�tes.</p>
40
41    <p>La n�gociation de contenu est assur�e par le module
42    <code class="module"><a href="/mod/mod_negotiation.html">mod_negotiation</a></code> qui est compil� par d�faut
43    dans le serveur.</p>
44</div>
45<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#about">� propos de la n�gociation de contenu</a></li>
46<li><img alt="" src="/images/down.gif" /> <a href="#negotiation">La n�gociation avec httpd</a></li>
47<li><img alt="" src="/images/down.gif" /> <a href="#methods">Les m�thodes de n�gociation</a></li>
48<li><img alt="" src="/images/down.gif" /> <a href="#better">Ajustement des valeurs de qualit�</a></li>
49<li><img alt="" src="/images/down.gif" /> <a href="#extensions">Extensions � la n�gociation de contenu
50transparente</a></li>
51<li><img alt="" src="/images/down.gif" /> <a href="#naming">Remarques � propos des liens hypertextes et des
52conventions de nommage</a></li>
53<li><img alt="" src="/images/down.gif" /> <a href="#caching">Remarque sur la mise en cache</a></li>
54</ul><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
55<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
56<div class="section">
57<h2><a name="about" id="about">� propos de la n�gociation de contenu</a></h2>
58
59    <p>Une ressource peut �tre disponible selon diff�rentes repr�sentations.
60    Par exemple, elle peut �tre disponible en diff�rents langages ou pour
61    diff�rents types de m�dia, ou une combinaison des deux.
62    Pour faire le meilleur choix, on peut fournir � l'utilisateur une page
63    d'index, et le laisser choisir. Cependant, le serveur peut souvent faire
64    ce choix automatiquement. Ceci est possible car les navigateurs peuvent
65    envoyer des informations sur les
66    repr�sentations qu'ils pr�f�rent � l'int�rieur de chaque requ�te.
67    Par exemple, un navigateur peut indiquer
68    qu'il pr�f�re voir les informations en fran�ais, mais qu'en cas
69    d'impossibilit� l'anglais peut convenir. Les navigateurs indiquent leurs
70    pr�f�rences � l'aide d'en-t�tes dans la requ�te. Pour ne demander que des
71    repr�sentations en fran�ais, le navigateur peut utiliser l'en-t�te :</p>
72
73<div class="example"><p><code>Accept-Language: fr</code></p></div>
74
75    <p>Notez qu'il ne sera tenu compte de cette pr�f�rence que s'il existe un
76    choix de repr�sentations et que ces derni�res varient en fonction
77    du langage.</p>
78
79    <p>� titre d'exemple d'une requ�te plus complexe, ce navigateur a �t�
80    configur� pour accepter le fran�ais et l'anglais, avec une pr�f�rence pour
81    le fran�ais, et accepter diff�rents types de m�dia, avec une pr�f�rence
82    pour HTML par rapport � au texte plat ("plain text") ou autres types de fichiers texte, et
83    avec une pr�f�rence pour GIF ou JPEG par rapport � tout autre type de
84    m�dia, mais autorisant tout autre type de m�dia en dernier ressort :</p>
85
86<div class="example"><p><code>
87  Accept-Language: fr; q=1.0, en; q=0.5<br />
88  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
89</code></p></div>
90
91    <p>httpd supporte la n�gociation de contenu "server driven" (telle qu'elle
92    est d�finie dans la sp�cification HTTP/1.1), o� c'est le serveur qui
93    d�cide quelle est la meilleure repr�sentation � retourner pour la ressource
94    demand�e. Il supporte enti�rement les en-t�tes de requ�te
95    <code>Accept</code>, <code>Accept-Language</code>,
96    <code>Accept-Charset</code> et <code>Accept-Encoding</code>.
97    httpd supporte aussi la n�gociation de contenu transparente, qui est un
98    protocole de n�gociation exp�rimental d�fini dans les RFC 2295 et 2296.
99    Il ne supporte pas la n�gociation de fonctionnalit� (feature negotiation)
100    telle qu'elle est d�finie dans ces RFCs.</p>
101
102    <p>Une <strong>ressource</strong> est une entit� conceptuelle identifi�e
103    par une URI (RFC 2396). Un serveur HTTP comme le serveur HTTP Apache
104    propose l'acc�s � des
105    <strong>repr�sentations</strong> de la ressource � l'int�rieur de son
106    espace de nommage, chaque repr�sentation �tant compos�e d'une s�quence
107    d'octets avec la d�finition d'un type de media, d'un jeu de caract�res,
108    d'un encodage, etc... A un instant donn�, chaque ressource peut �tre
109    associ�e avec z�ro, une ou plusieurs repr�sentations. Si plusieurs
110    repr�sentations sont disponibles, la ressource est qualifi�e de
111    <strong>n�gociable</strong> et chacune de ses repr�sentations se nomme
112    <strong>variante</strong>. Les diff�rences entre les
113    variantes disponibles d'une ressource n�gociable constituent les
114    <strong>dimensions</strong> de la n�gociation.</p>
115</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
116<div class="section">
117<h2><a name="negotiation" id="negotiation">La n�gociation avec httpd</a></h2>
118
119    <p>Afin de n�gocier une ressource, on doit fournir au serveur des
120    informations � propos de chacune des variantes. Il y a deux mani�res
121    d'accomplir ceci :</p>
122
123    <ul>
124      <li>Utiliser une liste de correspondances de type ("type-map") (<em>c'est � dire</em>
125      un fichier <code>*.var</code>) qui nomme explicitement les fichiers
126      contenant les variantes, ou</li>
127
128      <li>Utiliser une recherche "multivues", o� le serveur effectue une
129      recherche de correspondance sur un motif de nom de fichier implicite et
130      fait son choix parmi les diff�rents r�sultats.</li>
131    </ul>
132
133   <h3><a name="type-map" id="type-map">Utilisation d'un fichier de
134   correspondances de types (type-map)</a></h3>
135
136    <p>Une liste de correspondances de types est un document associ� au
137    gestionnaire <code>type-map</code> (ou, dans un souci de compatibilit�
138    ascendante avec des configurations de httpd plus anciennes, le
139    <a class="glossarylink" href="/glossary.html#type mime" title="voir glossaire">type MIME</a>
140    <code>application/x-type-map</code>). Notez que pour utiliser cette
141    fonctionnalit�, vous devez, dans le fichier de configuration, d�finir un
142    gestionnaire qui associe un suffixe de fichier � une <code>type-map</code>;
143    ce qui se fait simplement en ajoutant</p>
144
145<pre class="prettyprint lang-config">AddHandler type-map .var</pre>
146
147
148    <p>dans le fichier de configuration du serveur.</p>
149
150    <p>Les fichiers de correspondances de types doivent poss�der le m�me nom que
151    la ressource qu'ils d�crivent, avec pour extension
152    <code>.var</code>. Dans l'exemple ci-dessous, la ressource a pour
153    nom <code>foo</code>, et le fichier de correspondances se nomme donc
154    <code>foo.var</code>.</p>
155
156    <p>Ce fichier doit comporter une entr�e pour chaque variante
157    disponible; chaque entr�e consiste en une ligne contigu� d'en-t�tes au
158    format HTTP. les entr�es sont s�par�es par des lignes vides. Les lignes
159    vides � l'int�rieur d'une entr�e sont interdites. Par convention, le
160    fichier de correspondances de types d�bute par une entr�e concernant l'entit�
161    consid�r�e dans son ensemble (bien que ce ne soit pas obligatoire, et
162    ignor� si pr�sent). Un exemple de fichier de
163    correspondance de types est fourni
164    ci-dessous.</p>
165
166    <p>Les URIs de ce fichier sont relatifs � la localisation du fichier
167    de correspondances de types. En g�n�ral, ces fichiers se trouveront dans le
168    m�me r�pertoire que le fichier de correspondances de types, mais ce
169    n'est pas obligatoire. Vous pouvez utiliser des URIs absolus ou
170    relatifs pour tout fichier situ� sur le m�me serveur que le fichier
171    de correspondances.</p>
172
173<div class="example"><p><code>
174  URI: foo<br />
175<br />
176  URI: foo.en.html<br />
177  Content-type: text/html<br />
178  Content-language: en<br />
179<br />
180  URI: foo.fr.de.html<br />
181  Content-type: text/html;charset=iso-8859-2<br />
182  Content-language: fr, de<br />
183</code></p></div>
184
185    <p>Notez aussi qu'un fichier de correspondances de types prend le pas sur
186    les extensions de noms de fichiers, m�me si les Multivues sont activ�es.
187    Si les variantes sont de qualit�s diff�rentes, on doit l'indiquer
188    � l'aide du param�tre "qs" � la suite du type de m�dia, comme pour cette
189    image
190    (disponible aux formats JPEG, GIF, ou ASCII-art) : </p>
191
192<div class="example"><p><code>
193  URI: foo<br />
194<br />
195  URI: foo.jpeg<br />
196  Content-type: image/jpeg; qs=0.8<br />
197<br />
198  URI: foo.gif<br />
199  Content-type: image/gif; qs=0.5<br />
200<br />
201  URI: foo.txt<br />
202  Content-type: text/plain; qs=0.01<br />
203</code></p></div>
204
205    <p>Les valeurs de qs peuvent varier de 0.000 � 1.000. Notez que toute
206    variante poss�dant une valeur de qs de 0.000 ne sera jamais choisie.
207    Les variantes qui n'ont pas de param�tre qs d�fini se voient attribuer
208    une valeur de 1.0. Le param�tre qs indique la qualit� relative de la
209    variante compar�e � celle des autres variantes disponibles, sans tenir
210    compte des capacit�s du client. Par exemple, un fichier JPEG poss�de
211    en g�n�ral une qualit� sup�rieure � celle d'un fichier ASCII s'il
212    repr�sente une photographie. Cependant, si la ressource repr�sent�e est
213    � un ASCII art original, la repr�sentation ASCII sera de meilleure qualit�
214    que la repr�sentation JPEG. Ainsi une valeur de qs est associ�e � une
215    variante en fonction de la nature de la ressource qu'elle repr�sente.</p>
216
217    <p>La liste compl�te des en-t�tes reconnus est disponible dans la
218    documentation sur les <a href="mod/mod_negotiation.html#typemaps">correspondances de types du
219    module mod_negotiation</a>.</p>
220
221
222<h3><a name="multiviews" id="multiviews">Multivues (option Multiviews)</a></h3>
223
224    <p><code>MultiViews</code> est une option qui s'applique � un r�pertoire,
225    ce qui signifie qu'elle peut �tre activ�e � l'aide d'une directive
226    <code class="directive"><a href="/mod/core.html#options">Options</a></code> � l'int�rieur d'une section
227    <code class="directive"><a href="/mod/core.html#directory">&lt;Directory&gt;</a></code>, <code class="directive"><a href="/mod/core.html#location">&lt;Location&gt;</a></code> ou <code class="directive"><a href="/mod/core.html#files">&lt;Files&gt;</a></code> dans
228    <code>httpd.conf</code>, ou (si <code class="directive"><a href="/mod/core.html#allowoverride">AllowOverride</a></code> est correctement positionn�e) dans
229    des fichiers
230    <code>.htaccess</code>. Notez que <code>Options All</code>
231    n'active pas <code>MultiViews</code>; vous devez activer cette option en
232    la nommant explicitement.</p>
233
234    <p>L'effet de <code>MultiViews</code> est le suivant : si le serveur re�oit
235    une requ�te pour <code>/tel/r�pertoire/foo</code>, si
236    <code>MultiViews</code> est activ�e pour
237    <code>/tel/r�pertoire</code>, et si
238    <code>/tel/r�pertoire/foo</code> n'existe <em>pas</em>, le serveur parcourt
239    le r�pertoire � la recherche de fichiers nomm�s foo.*, et simule
240    litt�ralement une correspondance de types (type map) qui liste tous ces
241    fichiers, en leur associant les m�mes types de m�dia et encodages de
242    contenu qu'ils auraient eu si le client avait demand� l'acc�s � l'un
243    d'entre eux par son nom. Il choisit ensuite ce qui correspond le mieux
244    aux besoins du client.</p>
245
246    <p><code>MultiViews</code> peut aussi s'appliquer � la recherche du fichier
247    nomm� par la directive <code class="directive"><a href="/mod/mod_dir.html#directoryindex">DirectoryIndex</a></code>, si le serveur tente d'indexer
248    un r�pertoire. Si les fichiers de configuration sp�cifient</p>
249<pre class="prettyprint lang-config">DirectoryIndex index</pre>
250
251    <p>le serveur va choisir entre <code>index.html</code>
252    et <code>index.html3</code> si les deux fichiers sont pr�sents. Si aucun
253    n'est pr�sent, mais <code>index.cgi</code> existe,
254    le serveur l'ex�cutera.</p>
255
256    <p>Si, parcequ'elle n'est pas reconnue par <code>mod_mime</code>,
257    l'extension d'un des fichiers du r�pertoire ne permet pas de
258    d�terminer son jeu de caract�res, son type de contenu, son langage, ou son
259    encodage,  alors
260    le r�sultat d�pendra de la d�finition de la directive <code class="directive"><a href="/mod/mod_mime.html#multiviewsmatch">MultiViewsMatch</a></code>. Cette directive d�termine
261    si les gestionnaires (handlers), les filtres, et autres types d'extensions
262    peuvent participer � la n�gociation MultiVues.</p>
263
264</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
265<div class="section">
266<h2><a name="methods" id="methods">Les m�thodes de n�gociation</a></h2>
267
268    <p>Une fois obtenue la liste des variantes pour une ressource donn�e,
269    httpd dispose de deux m�thodes pour choisir la meilleure variante �
270    retourner, s'il y a lieu, soit � partir d'un fichier de
271    correspondances de types, soit en se basant sur les noms de fichiers du
272    r�pertoire. Il n'est pas n�cessaire de conna�tre en d�tails comment la
273    n�gociation fonctionne r�ellement pour pouvoir utiliser les fonctionnalit�s
274    de n�gociation de contenu de httpd. La suite de ce document explique
275    cependant les m�thodes utilis�es pour ceux ou celles qui sont
276    int�ress�s(�es). </p>
277
278    <p>Il existe deux m�thodes de n�gociation :</p>
279
280    <ol>
281      <li><strong>La n�gociation effectu�e par le serveur selon l'algorithme
282      de httpd</strong> est normalement utilis�e. l'algorithme de
283      httpd est
284      expliqu� plus en d�tails ci-dessous. Quand cet algorithme est utilis�,
285      httpd peut parfois "bricoler" le facteur de qualit� (qs) d'une dimension
286      particuli�re afin d'obtenir un meilleur r�sultat.
287      La mani�re dont httpd peut modifier les facteurs de qualit� est
288      expliqu�e plus en d�tails ci-dessous.</li>
289
290      <li><strong>La n�gociation de contenu transparente</strong> est utilis�e
291      quand le navigateur le demande explicitement selon le m�canisme d�fini
292      dans la RFC 2295. Cette m�thode de n�gociation donne au navigateur le
293      contr�le total du choix de la meilleure variante; le r�sultat d�pend
294      cependant de la sp�cificit� des algorithmes utilis�s par le navigateur.
295      Au cours du processus de n�gociation transparente, le navigateur peut
296      demander � httpd d'ex�cuter l'"algorithme de s�lection de variante �
297      distance" d�fini dans la RFC 2296.</li>
298    </ol>
299
300<h3><a name="dimensions" id="dimensions">Les dimensions de la n�gociation</a></h3>
301
302    <table>
303      
304      <tr valign="top">
305        <th>Dimension</th>
306
307        <th>Notes</th>
308      </tr>
309
310      <tr valign="top">
311        <td>Type de m�dia</td>
312
313        <td>Le navigateur affiche ses pr�f�rences � l'aide du champ d'en-t�te
314	<code>Accept</code>. Chaque type de m�dia peut se voir associ� un facteur de
315	qualit�. La description de la variante peut aussi avoir un facteur de
316	qualit� (le param�tre "qs").</td>
317      </tr>
318
319      <tr valign="top">
320        <td>Langage</td>
321
322        <td>Le navigateur affiche ses pr�f�rences � l'aide du champ d'en-t�te
323        <code>Accept-Language</code>. Chaque langue peut se voir associ� un facteur de
324	qualit�. Les variantes peuvent �tre associ�es avec z�ro, un ou
325	plusieurs langages.</td>
326      </tr>
327
328      <tr valign="top">
329        <td>Encoding</td>
330
331        <td>Le navigateur affiche ses pr�f�rences � l'aide du champ d'en-t�te
332        <code>Accept-Encoding</code>. Chaque encodage peut se voir associ� un facteur de
333	qualit�.</td>
334      </tr>
335
336      <tr valign="top">
337        <td>Charset</td>
338
339        <td>Le navigateur affiche ses pr�f�rences � l'aide du champ d'en-t�te
340        <code>Accept-Charset</code>. Chaque jeu de caract�re peut se voir associ� un facteur de
341	qualit�. Les variantes peuvent pr�ciser un jeu de caract�res comme
342	param�tre du type de m�dia.</td>
343      </tr>
344    </table>
345
346
347<h3><a name="algorithm" id="algorithm">L'algorithme de n�gociation de
348httpd</a></h3>
349
350    <p>httpd peut utiliser l'algorithme suivant pour choisir la "meilleure"
351    variante (s'il y en a une) � retourner au navigateur. Cet algorithme n'est pas
352    configurable. Il fonctionne comme suit :</p>
353
354    <ol>
355      <li>En premier lieu, pour chaque dimension de la n�gociation, consulter
356      le champ d'en-t�te <em>Accept*</em> appropri� et assigner une qualit� �
357      chaque variante. Si l'en-t�te <em>Accept*</em> pour toute dimension
358      implique que la variante n'est pas acceptable, �liminer cette derni�re.
359      S'il ne reste plus de variante, aller � l'�tape 4.</li>
360
361      <li>
362        Choisir la "meilleure" variante par �limination. Chacun des tests
363	suivants est effectu� dans cet ordre. Toute variante non s�lectionn�e
364	� l'issue d'un test est �limin�e. Apr�s chaque test, s'il reste une
365	seule variante, choisir cette derni�re comme celle qui correspond le
366	mieux puis aller � l'�tape 3. S'il reste plusieurs variantes, passer
367	au test suivant.
368
369        <ol>
370          <li>Multiplier le facteur de qualit� de l'en-t�te
371	  <code>Accept</code> par le facteur de qualit� "qs" pour le type de
372	  m�dia de ces variantes, et choisir la variante qui poss�de la valeur
373	  la plus importante.</li>
374
375          <li>S�lectionner les variantes qui poss�dent le facteur de qualit�
376	  de langage le plus haut.</li>
377
378          <li>S�lectionner les variantes dont le langage correspond le mieux,
379          en se basant sur l'ordre des langages de l'en-t�te
380          <code>Accept-Language</code> (s'il existe), ou de la directive
381	  <code>LanguagePriority</code> (si elle existe).</li>
382
383          <li>S�lectionner les variantes poss�dant le param�tre de m�dia
384	  "level" le plus �lev� (utilis� pour pr�ciser la version des types de
385	  m�dia text/html).</li>
386
387          <li>S�lectionner les variantes poss�dant le param�tre de m�dia
388	  "charset" (jeu de caract�res) qui correspond le mieux, en se basant
389	  sur la ligne d'en-t�te <code>Accept-Charset</code> . Le jeu de
390	  caract�res ISO-8859-1 est acceptable sauf s'il est explicitement
391	  exclus. Les variantes avec un type de m�dia <code>text/*</code>
392          mais non explicitement associ�es avec un jeu de caract�res
393	  particulier sont suppos�es �tre en ISO-8859-1.</li>
394
395          <li>S�lectionner les variantes dont le param�tre de m�dia "charset"
396	  associ� n'est <em>pas</em> ISO-8859-1. S'il n'en existe pas,
397	  s�lectionner toutes les variantes.</li>
398
399          <li>S�lectionner les variantes avec le meilleur encodage. S'il existe
400	  des variantes avec un encodage acceptable pour le client,
401	  s�lectionner celles-ci. Sinon, s'il existe des variantes encod�es et
402	  des variantes non encod�es, ne s�lectionner que les variantes non
403	  encod�es. Si toutes les variantes sont encod�es ou si aucune
404	  ne l'est, s�lectionner toutes les variantes.</li>
405
406          <li>S�lectionner les variantes dont le contenu a la longueur
407	  la plus courte.</li>
408
409          <li>S�lectionner la premi�re des variantes restantes. Il s'agira
410	  soit de la premi�re variante list�e dans le fichier de
411	  correspondances de types, soit, quand les variantes sont lues depuis
412	  le r�pertoire, la premi�re par ordre alphab�tique quand elles sont
413	  tri�es selon le code ASCII.</li>
414        </ol>
415      </li>
416
417      <li>L'algorithme a maintenant s�lectionn� une variante consid�r�e comme
418      la "meilleure", il la retourne donc au client en guise de r�ponse.
419      L'en-t�te HTTP <code>Vary</code> de la r�ponse est renseign� de fa�on �
420      indiquer les dimensions de la n�gociation (les navigateurs et les caches
421      peuvent utiliser cette information lors de la mise en cache de la
422      ressource).  Travail termin�.</li>
423
424      <li>Le passage par cette �tape signifie qu'aucune variante n'a �t�
425      s�lectionn�e (parcequ'aucune n'est acceptable pour le navigateur).
426      Envoyer une r�ponse avec un code de statut 406 (qui signifie "Aucune
427      repr�sentation acceptable") et un corps comportant un document HTML qui
428      affiche les variantes disponibles. Renseigner aussi l'en-t�te HTTP
429      <code>Vary</code> de fa�on � indiquer les dimensions de la variante.</li>
430    </ol>
431
432</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
433<div class="section">
434<h2><a name="better" id="better">Ajustement des valeurs de qualit�</a></h2>
435
436    <p>Parfois httpd modifie les valeurs de qualit� par rapport � celles qui
437    d�couleraient d'une stricte interpr�tation de l'algorithme de n�gociation
438    de httpd ci-dessus, ceci pour am�liorer les r�sultats de l'algorithme pour
439    les navigateurs qui envoient des informations incompl�tes ou inappropri�es.
440    Certains des navigateurs les plus populaires envoient des informations dans
441    l'en-t�te <code>Accept</code> qui, sans ce traitement, provoqueraient la
442    s�lection d'une variante inappropri�e dans de nombreux cas. Quand un
443    navigateur envoie des informations compl�tes et correctes ces ajustements
444    ne sont pas effectu�s.</p>
445
446<h3><a name="wildcards" id="wildcards">Types de m�dia et caract�res g�n�riques</a></h3>
447
448    <p>L'en-t�te de requ�te <code>Accept:</code> indique les types de m�dia
449    souhait�s. Il peut aussi contenir des types de m�dia avec caract�res
450    g�n�riques, comme "image/*" ou "*/*" o� * correspond � n'importe quelle
451    cha�ne de caract�res. Ainsi une requ�te contenant :</p>
452
453<div class="example"><p><code>Accept: image/*, */*</code></p></div>
454
455    <p>indiquerait que tout type de m�dia est acceptable, avec une pr�f�rence
456    pour les types commen�ant par "image/".
457    Certains navigateurs ajoutent par d�faut des types de m�dia avec caract�res
458    g�n�riques aux types explicitement nomm�s qu'ils peuvent g�rer.
459    Par exemple :</p>
460
461<div class="example"><p><code>
462  Accept: text/html, text/plain, image/gif, image/jpeg, */*
463</code></p></div>
464    <p>Ceci indique que les types explicitement list�s sont pr�f�r�s, mais
465    qu'une repr�sentation avec un type diff�rent de ces derniers conviendra
466    aussi.  Les valeurs de qualit�s explicites,
467    afin de pr�ciser ce que veut vraiment le navigateur, s'utilisent
468    comme suit :</p>
469<div class="example"><p><code>
470  Accept: text/html, text/plain, image/gif, image/jpeg, */*; q=0.01
471</code></p></div>
472    <p>Les types explicites n'ont pas de facteur de qualit�, la valeur par
473    d�faut de leur pr�f�rence est donc de 1.0 (la plus haute). Le type avec
474    caract�res g�n�riques */* se voit attribuer une pr�f�rence basse de 0.01,
475    si bien que les types autres que ceux explicitement list�s ne seront retourn�s
476    que s'il n'existe pas de variante correspondant � un type explicitement
477    list�.</p>
478
479    <p>Si l'en-t�te <code>Accept:</code> ne contient <em>pas</em> aucun
480    facteur de qualit�, httpd positionne la valeur de qualit� de
481    "*/*", si present, � 0.01 pour simuler l'effet d�sir�. Il positionne aussi
482    la valeur de qualit� des types avec caract�res g�n�riques au format
483    "type/*" � 0.02 (ils sont donc pr�f�r�s � ceux correspondant � "*/*"). Si
484    un type de m�dia dans l'en-t�te <code>Accept:</code> contient un facteur de
485    qualit�, ces valeurs sp�ciales ne seront <em>pas</em> appliqu�es, de fa�on
486    � ce que les requ�tes de navigateurs qui envoient les informations
487    explicites � prendre en compte fonctionnent comme souhait�.</p>
488
489
490<h3><a name="exceptions" id="exceptions">Exceptions dans la n�gociation du
491langage</a></h3>
492
493    <p>A partir de la version 2.0 de httpd, certaines exceptions ont �t�
494    ajout�es � l'algorithme de n�gociation afin de m�nager une issue de secours
495    quand la n�gociation ne trouve aucun langage correspondant.</p>
496
497    <p>Quand un client demande une page sur votre serveur, si ce dernier ne
498    parvient pas � trouver une page dont la langue corresponde � l'en-t�te
499    <code>Accept-language</code> envoy� par le navigateur, il enverra au client
500    une r�ponse "Aucune variante acceptable" ou "Plusieurs choix possibles".
501    Pour �viter ces
502    messages d'erreur, il est possible de configurer httpd de fa�on � ce que,
503    dans ces cas, il ignore l'en-t�te <code>Accept-language</code> et fournisse
504    tout de m�me un document, m�me s'il ne correspond pas exactement � la
505    demande explicite du client. La directive <code class="directive"><a href="/mod/mod_negotiation.html#forcelanguagepriority">ForceLanguagePriority</a></code>
506    peut �tre utilis�e pour �viter ces messages d'erreur et leur substituer une
507    page dont le langage sera d�termin� en fonction du contenu de la directive
508    <code class="directive"><a href="/mod/mod_negotiation.html#languagepriority">LanguagePriority</a></code>.</p>
509
510    <p>Le serveur va aussi essayer d'�tendre sa recherche de correspondance aux
511    sous-ensembles de langages quand aucune correspondance exacte ne peut �tre
512    trouv�e. Par exemple, si un client demande des documents poss�dant le
513    langage <code>en-GB</code>, c'est � dire anglais britannique, le standard
514    HTTP/1.1 n'autorise normalement pas le serveur � faire correspondre cette
515    demande � un document dont le langage est simplement <code>en</code>.
516    (Notez qu'inclure <code>en-GB</code> et non <code>en</code> dans l'en-t�te
517    <code>Accept-Language</code> constitue une quasi-erreur de configuration,
518    car il est tr�s peu probable qu'un lecteur qui comprend l'anglais
519    britannique, ne comprenne pas l'anglais en g�n�ral. Malheureusement, de
520    nombreux clients ont r�ellement des configurations par d�faut de ce type.)
521    Cependant, si aucune autre correspondance de langage n'est possible, et que le
522    serveur est sur le point de retourner une erreur "Aucune variable
523    acceptable" ou de choisir le langage d�fini par la directive <code class="directive"><a href="/mod/mod_negotiation.html#languagepriority">LanguagePriority</a></code>, le serveur ignorera
524    la sp�cification du sous-ensemble de langage et associera la demande en
525    <code>en-GB</code> � des documents en <code>en</code>.  Implicitement,
526    httpd ajoute le langage parent � la liste de langues accept�s par le
527    client avec une valeur de qualit� tr�s basse. Notez cependant que si le
528    client demande "en-GB; q=0.9, fr; q=0.8", et le serveur dispose de
529    documents estampill�s "en" et "fr", alors c'est le document "fr" qui sera
530    retourn�, tout ceci dans un souci de compatibilit� avec la sp�cification
531    HTTP/1.1 et afin de fonctionner efficacement avec les clients
532    correctement configur�s.</p>
533
534    <p>Pour supporter les techniques avanc�es (comme les cookies ou les chemins
535    d'URL sp�ciaux) afin de d�terminer le langage pr�f�r� de l'utilisateur, le
536    module <code class="module"><a href="/mod/mod_negotiation.html">mod_negotiation</a></code> reconna�t la
537    <a href="env.html">variable d'environnement</a>
538    <code>prefer-language</code>
539    depuis la version 2.0.47 de httpd. Si elle est d�finie et contient un
540    symbole de langage appropri�, <code class="module"><a href="/mod/mod_negotiation.html">mod_negotiation</a></code> va essayer
541    de s�lectionner une variante correspondante. S'il n'existe pas de telle
542    variante, le processus normal de n�gociation sera lanc�.</p>
543
544    <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SetEnvIf Cookie "language=(.+)" prefer-language=$1
545Header append Vary cookie</pre>
546</div>
547
548</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
549<div class="section">
550<h2><a name="extensions" id="extensions">Extensions � la n�gociation de contenu
551transparente</a></h2>
552
553<p>httpd �tend le protocole de n�gociation de contenu transparente (RFC
5542295) comme suit. Un nouvel �l�ment <code>{encodage ..}</code> est utilis� dans
555les listes de variantes pour marquer celles qui ne sont disponibles qu'avec un
556encodage de contenu sp�cifique. L'impl�mentation de l'algorithme
557RVSA/1.0 (RFC 2296) est �tendue � la reconnaissance de variantes encod�es dans
558la liste, et � leur utilisation en tant que variantes candidates � partir du
559moment o� leur encodage satisfait au contenu de l'en-t�te de requ�te
560<code>Accept-Encoding</code>. L'impl�mentation RVSA/1.0 n'arrondit pas les
561facteurs de qualit� calcul�s � 5 d�cimales avant d'avoir choisi la meilleure
562variante.</p>
563</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
564<div class="section">
565<h2><a name="naming" id="naming">Remarques � propos des liens hypertextes et des
566conventions de nommage</a></h2>
567
568    <p>Si vous utilisez la n�gociation de langage, vous avez le choix entre
569    diff�rentes conventions de nommage, car les fichiers peuvent poss�der
570    plusieurs extensions, et l'ordre dans lequel ces derni�res apparaissent
571    est en g�n�ral sans rapport (voir la documentation sur le module <a href="mod/mod_mime.html#multipleext">mod_mime</a>
572    pour plus de d�tails).</p>
573
574    <p>Un fichier type poss�de une extension li�e au type MIME
575    (<em>par exemple</em>, <code>html</code>), mais parfois aussi une
576    extension li�e � l'encodage (<em>par exemple</em>, <code>gz</code>),
577    et bien s�r une extension li�e au langage
578    (<em>par exemple</em>, <code>en</code>) quand plusieurs variantes de
579    langage sont disponibles pour ce fichier.</p>
580
581    <p>Exemples :</p>
582
583    <ul>
584      <li>foo.en.html</li>
585
586      <li>foo.html.en</li>
587
588      <li>foo.en.html.gz</li>
589    </ul>
590
591    <p>Ci-dessous d'autres exemples de noms de fichiers avec des liens
592    hypertextes valides et invalides :</p>
593
594    <table class="bordered">
595      
596      <tr>
597        <th>Nom fichier</th>
598
599        <th>lien valide</th>
600
601        <th>Lien invalide</th>
602      </tr>
603
604      <tr>
605        <td><em>foo.html.en</em></td>
606
607        <td>foo<br />
608         foo.html</td>
609
610        <td>-</td>
611      </tr>
612
613      <tr>
614        <td><em>foo.en.html</em></td>
615
616        <td>foo</td>
617
618        <td>foo.html</td>
619      </tr>
620
621      <tr>
622        <td><em>foo.html.en.gz</em></td>
623
624        <td>foo<br />
625         foo.html</td>
626
627        <td>foo.gz<br />
628         foo.html.gz</td>
629      </tr>
630
631      <tr>
632        <td><em>foo.en.html.gz</em></td>
633
634        <td>foo</td>
635
636        <td>foo.html<br />
637         foo.html.gz<br />
638         foo.gz</td>
639      </tr>
640
641      <tr>
642        <td><em>foo.gz.html.en</em></td>
643
644        <td>foo<br />
645         foo.gz<br />
646         foo.gz.html</td>
647
648        <td>foo.html</td>
649      </tr>
650
651      <tr>
652        <td><em>foo.html.gz.en</em></td>
653
654        <td>foo<br />
655         foo.html<br />
656         foo.html.gz</td>
657
658        <td>foo.gz</td>
659      </tr>
660    </table>
661
662    <p>En regardant la table ci-dessus, vous remarquerez qu'il est toujours
663    possible d'utiliser le nom de fichier sans extension dans un lien
664    (<em>par exemple</em>, <code>foo</code>). L'avantage est de pouvoir
665    dissimuler le type r�el du fichier associ� � un document et de pouvoir
666    le modifier
667    ult�rieurement, <em>par exemple</em>, de <code>html</code> �
668    <code>shtml</code> ou <code>cgi</code> sans avoir �
669    mettre � jour aucun lien.</p>
670
671    <p>Si vous souhaitez continuer � utiliser un type MIME dans vos liens
672    (<em>par exemple </em> <code>foo.html</code>), l'extension li�e au langage
673    (y compris une extension li�e � l'encodage s'il en existe une)
674    doit se trouver � droite de l'extension li�e au type MIME
675    (<em>par exemple</em>, <code>foo.html.en</code>).</p>
676</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
677<div class="section">
678<h2><a name="caching" id="caching">Remarque sur la mise en cache</a></h2>
679
680    <p>Quand un cache stocke une repr�sentation, il l'associe avec l'URL de la
681    requ�te. Lorsque cette URL est � nouveau demand�e, le cache peut utiliser
682    la repr�sentation stock�e. Cependant, si la ressource est n�gociable au
683    niveau du serveur, il se peut que seule la premi�re variante demand�e soit
684    mise en cache et de ce fait, la correspondance positive du cache peut
685    entra�ner une r�ponse inappropri�e. Pour
686    �viter ceci, httpd marque par
687    d�faut toutes les r�ponses qui sont retourn�es apr�s une n�gociation de
688    contenu comme "non-cachables" par les clients HTTP/1.0. httpd supporte
689    aussi les fonctionnalit�s du protocole HTTP/1.1 afin de permettre la mise
690    en cache des r�ponses n�goci�es.</p>
691
692    <p>Pour les requ�tes en provenance d'un client compatible HTTP/1.0
693    (un navigateur ou un cache), la directive <code class="directive"><a href="/mod/mod_negotiation.html#cachenegotiateddocs">CacheNegotiatedDocs</a></code> peut �tre utilis�e
694    pour permettre la mise en cache des r�ponses qui ont fait l'objet d'une
695    n�gociation. Cette directive peut intervenir dans la configuration au
696    niveau du serveur ou de l'h�te virtuel, et n'accepte aucun argument. Elle
697    n'a aucun effet sur les requ�tes en provenance de clients HTTP/1.1.</p>
698
699    <p>Pour les clients HTTP/1.1, httpd envoie un en-t�te de r�ponse HTTP
700    <code>Vary</code> afin d'indiquer les dimensions de la n�gociation pour
701    cette r�ponse. Les caches peuvent
702    utiliser cette information afin de d�terminer
703    si une requ�te peut �tre servie � partir de la copie locale. Pour inciter
704    un cache � utiliser la copie locale sans tenir compte des dimensions de la
705    n�gociation, d�finissez la
706    <a href="env.html#special">variable d'environnement</a>
707    <code>force-no-vary</code>.</p>
708
709</div></div>
710<div class="bottomlang">
711<p><span>Langues Disponibles: </span><a href="/en/content-negotiation.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
712<a href="/fr/content-negotiation.html" title="Fran�ais">&nbsp;fr&nbsp;</a> |
713<a href="/ja/content-negotiation.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
714<a href="/ko/content-negotiation.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
715<a href="/tr/content-negotiation.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</a></p>
716</div><div class="top"><a href="#page-header"><img src="/images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
717<script type="text/javascript"><!--//--><![CDATA[//><!--
718var comments_shortname = 'httpd';
719var comments_identifier = 'http://httpd.apache.org/docs/2.4/content-negotiation.html';
720(function(w, d) {
721    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
722        d.write('<div id="comments_thread"><\/div>');
723        var s = d.createElement('script');
724        s.type = 'text/javascript';
725        s.async = true;
726        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
727        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
728    }
729    else { 
730        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
731    }
732})(window, document);
733//--><!]]></script></div><div id="footer">
734<p class="apache">Copyright 2014 The Apache Software Foundation.<br />Autoris� sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
735<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">Glossaire</a> | <a href="/sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
736if (typeof(prettyPrint) !== 'undefined') {
737    prettyPrint();
738}
739//--><!]]></script>
740</body></html>