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="<-" alt="<-" src="/images/left.gif" /></a></div> 21<div id="path"> 22<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Serveur HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <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"> en </a> | 25<a href="/fr/content-negotiation.html" title="Fran�ais"> fr </a> | 26<a href="/ja/content-negotiation.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | 27<a href="/ko/content-negotiation.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | 28<a href="/tr/content-negotiation.html" hreflang="tr" rel="alternate" title="T�rk�e"> tr </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"><Directory></a></code>, <code class="directive"><a href="/mod/core.html#location"><Location></a></code> ou <code class="directive"><a href="/mod/core.html#files"><Files></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"> en </a> | 712<a href="/fr/content-negotiation.html" title="Fran�ais"> fr </a> | 713<a href="/ja/content-negotiation.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | 714<a href="/ko/content-negotiation.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | 715<a href="/tr/content-negotiation.html" hreflang="tr" rel="alternate" title="T�rk�e"> tr </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&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>